<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 24249 -->
<!-- Reviewed: no -->
<sect2 id="zend.log.writers.firebug">
    <title>An Firebug schreiben</title>

    <para>
        <classname>Zend_Log_Writer_Firebug</classname> sendet Logdaten an die
        <ulink url="http://www.getfirebug.com/">Firebug</ulink>
        <ulink url="http://getfirebug.com/logging.html">Console</ulink>.
    </para>

    <para>
        <inlinegraphic fileref="figures/zend.wildfire.firebug.console.png" format="PNG" scale="100"
            width="310" />
    </para>

    <para>
        Alle Daten werden über die <classname>Zend_Wildfire_Channel_HttpHeaders</classname>
        Komponente gesendet welche <acronym>HTTP</acronym> Header verwendet um sicherzustellen das
        der Seiteninhalt nicht verändert wird. Das Debuggen von <acronym>AJAX</acronym> Anfragen die
        klare <acronym>JSON</acronym> und <acronym>XML</acronym> Antworten benötigen ist mit diesem
        Vorgehen möglich.
    </para>

    <para>
        Notwendigkeiten:
    </para>

    <itemizedlist>
        <listitem>
            <para>
                Ein Firefox Browser idealerweise Version 3 aber auch Version 2 wird unterstützt.
            </para>
        </listitem>

        <listitem>
            <para>
                Die Firebug Firefox Erweiterung welche unter <ulink
                    url="https://addons.mozilla.org/en-US/firefox/addon/1843">https://addons.mozilla.org/en-US/firefox/addon/1843</ulink>
                heruntergeladen werden kann.
            </para>
        </listitem>

        <listitem>
            <para>
                Die FirePHP Filefox Erweiterung welche unter <ulink
                    url="https://addons.mozilla.org/en-US/firefox/addon/6149">https://addons.mozilla.org/en-US/firefox/addon/6149</ulink>
                heruntergeladen werden kann.
            </para>
        </listitem>
    </itemizedlist>

    <example id="zend.log.writers.firebug.example.with_front_controller">
        <title>Loggen mit Zend_Controller_Front</title>

        <programlisting language="php"><![CDATA[
// In der Bootstrap Datei platzieren bevor der Frontcontroller ausgeführt wird
$writer = new Zend_Log_Writer_Firebug();
$logger = new Zend_Log($writer);

// Verwende das in den Modell, View, und Controller Dateien
$logger->log('Das ist eine Lognachricht!', Zend_Log::INFO);
]]></programlisting>
    </example>

    <example id="zend.log.writers.firebug.example.without_front_controller">
        <title>Loggen ohne Zend_Controller_Front</title>

        <programlisting language="php"><![CDATA[
$writer = new Zend_Log_Writer_Firebug();
$logger = new Zend_Log($writer);

$request = new Zend_Controller_Request_Http();
$response = new Zend_Controller_Response_Http();
$channel = Zend_Wildfire_Channel_HttpHeaders::getInstance();
$channel->setRequest($request);
$channel->setResponse($response);

// Ausgabe buffering starten
ob_start();

// Jetzt können Aufrufe an den Logger durchgeführt werden
$logger->log('Das ist eine Lognachricht!', Zend_Log::INFO);

// Logdaten an den Browser senden
$channel->flush();
$response->sendHeaders();
]]></programlisting>
    </example>

    <sect3 id="zend.log.writers.firebug.priority-styles">
        <title>Setzen von Stilen für Prioritäten</title>

        <para>
            Eingebaute und Benutzerdefinierte Prioritäten können mit der
            <methodname>setPriorityStyle()</methodname> Methode angepasst werden.
        </para>

        <programlisting language="php"><![CDATA[
$logger->addPriority('FOO', 8);
$writer->setPriorityStyle(8, 'TRACE');
$logger->foo('Foo Nachricht');
]]></programlisting>

        <para>
            Der Standardstil für Benutzerdefinierte Prioritäten kann mit der
            <methodname>setDefaultPriorityStyle()</methodname> Methode gesetzt werden.
        </para>

        <programlisting language="php"><![CDATA[
$writer->setDefaultPriorityStyle('TRACE');
]]></programlisting>

        <para>
            Die unterstützten Stile sind wie folgt:

            <table id="zend.log.writers.firebug.priority-styles.table">
                <title>Firebug Logging Stile</title>

                <tgroup cols="2">
                    <thead>
                        <row>
                            <entry>Stil</entry>
                            <entry>Beschreibung</entry>
                        </row>
                    </thead>

                    <tbody>
                        <row>
                            <entry><constant>LOG</constant></entry>
                            <entry>Zeigt eine reine Lognachricht an</entry>
                        </row>

                        <row>
                            <entry><constant>INFO</constant></entry>
                            <entry>Zeigt eine Info Lognachricht an</entry>
                        </row>

                        <row>
                            <entry><constant>WARN</constant></entry>
                            <entry>Zeigt eine Warnungs Lognachricht an</entry>
                        </row>

                        <row>
                            <entry><constant>ERROR</constant></entry>

                            <entry>
                                Zeigt eine Fehler Lognachricht an die den Fehlerzählen von Firebug
                                erhöht
                            </entry>
                        </row>

                        <row>
                            <entry><constant>TRACE</constant></entry>

                            <entry>
                                Zeigt eine Lognachricht mit einem erweiterbaren Stack Trace an
                            </entry>
                        </row>

                        <row>
                            <entry><constant>EXCEPTION</constant></entry>

                            <entry>
                                Zeigt eine lange Fehlernachicht mit erweiterbarem Stack Trace an
                            </entry>
                        </row>

                        <row>
                            <entry><constant>TABLE</constant></entry>
                            <entry>Zeigt eine Lognachricht mit erweiterbarer Tabelle an</entry>
                        </row>
                    </tbody>
                </tgroup>
            </table>
        </para>
    </sect3>

    <sect3 id="zend.log.writers.firebug.preparing-data">
        <title>Daten für das Loggen vorbereiten</title>

        <para>
            Wärend jede <acronym>PHP</acronym> Variable mit den eingebauten Prioritäten geloggt
            werden kann, ist eine etwas spezielle Formatierung notwendig wenn einige der
            spezialisierteren Logstile verwendet werden.
        </para>

        <para>
            Die <constant>LOG</constant>, <constant>INFO</constant>, <constant>WARN</constant>,
            <constant>ERROR</constant> und <constant>TRACE</constant> Stile benötigen keine
            spezielle Formatierung.
        </para>
    </sect3>

    <sect3 id="zend.log.writers.firebug.preparing-data.exception">

      <title>Loggen von Ausnahmen</title>

      <para>
          Um eine <classname>Zend_Exception</classname> zu loggen muß einfach das Exceptionobjekt an
          den Logger übergeben werden. Es ist egal welche Priorität oder welcher Stil gesetzt wurde,
          da die Ausnahme automatisch erkannt wird.
      </para>

      <programlisting language="php"><![CDATA[
$exception = new Zend_Exception('Test Ausnahme');
$logger->err($exception);
]]></programlisting>
    </sect3>

    <sect3 id="zend.log.writers.firebug.preparing-data.table">
      <title>Tabellen loggen</title>

      <para>
          Man kann auch Daten loggen und diese in einem Table Stil formatieren. Spalten werden
          automatisch erkannt und die erste Zeile der Daten wird automatisch der Header.
      </para>

      <programlisting language="php"><![CDATA[
$writer->setPriorityStyle(8, 'TABLE');
$logger->addPriority('TABLE', 8);

$table = array('Summary line for the table',
               array(
                   array('Spalte 1', 'Spalte 2'),
                   array('Zeile 1 c 1','Zeile 1 c 2'),
                   array('Zeile 2 c 1',' Zeile 2 c 2')
               )
         );
$logger->table($table);
]]></programlisting>
    </sect3>
</sect2>
