| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 24249 -->
- <!-- Reviewed: no -->
- <sect1 id="zend.log.formatters">
- <title>Formatter</title>
- <para>
- Ein Formatter ist ein Objekt das dafür zuständig ist ein <property>event</property> Array
- anzunehmen welches ein Log Event beschreibt und einen String auszugeben mit einer
- formatierten Logzeile.
- </para>
- <para>
- Einige Writer sind nicht zeilen-orientiert und können keinen Formatter benutzen. Ein
- Beispiel ist der Datenbank Writer, welcher die Events direkt in die Datenbankzeilen einfügt.
- Für Writer die Formatter nicht unterstützen können, wird eine Ausnahme geworfen wenn
- versucht wird einen Formatter zu setzen.
- </para>
- <sect2 id="zend.log.formatters.simple">
- <title>Eingache Formatierung</title>
- <para>
- <classname>Zend_Log_Formatter_Simple</classname> ist der Standard Formatter. Er ist
- automatisch konfiguriert wenn kein Formatter definiert wird. Die Standard Konfiguration
- ist identisch mit dem folgenden:
- </para>
- <programlisting language="php"><![CDATA[
- $format = '%timestamp% %priorityName% (%priority%): %message%' . PHP_EOL;
- $formatter = new Zend_Log_Formatter_Simple($format);
- ]]></programlisting>
- <para>
- Ein Formatter wird einem individuellen Writer Objekt gesetzt durch Verwenden der
- <methodname>setFormatter()</methodname> Methode des Writer's:
- </para>
- <programlisting language="php"><![CDATA[
- $writer = new Zend_Log_Writer_Stream('php://output');
- $formatter = new Zend_Log_Formatter_Simple('Hallo %message%' . PHP_EOL);
- $writer->setFormatter($formatter);
- $logger = new Zend_Log();
- $logger->addWriter($writer);
- $logger->info('dort');
- // Gibt "Hallo dort" aus
- ]]></programlisting>
- <para>
- Der Konstruktor von <classname>Zend_Log_Formatter_Simple</classname> akzeptiert einen
- einzelnen Parameter: Den Format String. Dieser String enthält Schlüssel die durch
- Prozentzeichen begrenzt sind (z.B. <command>%message%</command>). Der Format String kann
- jeden Schlüssel des Event Data Arrays enthalten. Die Standardschlüssel können durch
- Verwendung der DEFAULT_FORMAT Konstante von
- <classname>Zend_Log_Formatter_Simple</classname> empfangen werden.
- </para>
- </sect2>
- <sect2 id="zend.log.formatters.xml">
- <title>In XML formatieren</title>
- <para>
- <classname>Zend_Log_Formatter_Xml</classname> formatiert Log Daten in einen
- <acronym>XML</acronym> String. Standardmäßig loggt er automatisch alle Elemente des
- Event Data Arrays:
- </para>
- <programlisting language="php"><![CDATA[
- $writer = new Zend_Log_Writer_Stream('php://output');
- $formatter = new Zend_Log_Formatter_Xml();
- $writer->setFormatter($formatter);
- $logger = new Zend_Log();
- $logger->addWriter($writer);
- $logger->info('Informative Nachricht');
- ]]></programlisting>
- <para>
- Der obige Code gibt das folgende <acronym>XML</acronym> aus (Leerzeichen werden für
- Klarstellung hinzugefügt):
- </para>
- <programlisting language="xml"><![CDATA[
- <logEntry>
- <timestamp>2007-04-06T07:24:37-07:00</timestamp>
- <message>Informative Nachricht</message>
- <priority>6</priority>
- <priorityName>INFO</priorityName>
- </logEntry>
- ]]></programlisting>
- <para>
- Es ist möglich das Root Element anzupassen sowie ein Mapping von <acronym>XML</acronym>
- Elementen zu den Elementen im Event Data Array zu definieren. Der Konstruktor von
- <classname>Zend_Log_Formatter_Xml</classname> akzeptiert einen String mit dem Namen des
- Root Elements als ersten Parameter und ein assoziatives Array mit den gemappten
- Elementen als zweiten Parameter:
- </para>
- <programlisting language="php"><![CDATA[
- $writer = new Zend_Log_Writer_Stream('php://output');
- $formatter = new Zend_Log_Formatter_Xml('log',
- array('msg' => 'message',
- 'level' => 'priorityName')
- );
- $writer->setFormatter($formatter);
- $logger = new Zend_Log();
- $logger->addWriter($writer);
- $logger->info('Informative Nachricht');
- ]]></programlisting>
- <para>
- Der obige Code ändert das Root Element von seinem Standard <property>logEntry</property>
- zu <property>log</property>. Er mappt auch das Element <property>msg</property> zum
- Event Daten Element <property>message</property>. Das ergibt die folgende Ausgabe:
- </para>
- <programlisting language="xml"><![CDATA[
- <log>
- <msg>Informative Nachricht</msg>
- <level>INFO</level>
- </log>
- ]]></programlisting>
- </sect2>
- </sect1>
|