Zend_Log-Formatters.xml 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 15156 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.log.formatters">
  5. <title>Formatter</title>
  6. <para>
  7. Ein Formatter ist ein Objekt das dafür zuständig ist ein <code>event</code> Array anzunehmen welches ein Log
  8. Event beschreibt und einen String auszugeben mit einer formatierten Logzeile.
  9. </para>
  10. <para>
  11. Einige Writer sind nicht zeilen-orientiert und können keinen Formatter benutzen. Ein Beispiel ist der
  12. Datenbank Writer, welcher die Events direkt in die Datenbankzeilen einfügt. Für Writer die Formatter nicht
  13. unterstützen können, wird eine Ausnahme geworfen wenn versucht wird einen Formatter zu setzen.
  14. </para>
  15. <sect2 id="zend.log.formatters.simple">
  16. <title>Eingache Formatierung</title>
  17. <para>
  18. <classname>Zend_Log_Formatter_Simple</classname> ist der Standard Formatter. Er ist automatisch konfiguriert wenn
  19. kein Formatter definiert wird. Die Standard Konfiguration ist identisch mit dem folgenden:
  20. <programlisting role="php"><![CDATA[
  21. $format = '%timestamp% %priorityName% (%priority%): %message%' . PHP_EOL;
  22. $formatter = new Zend_Log_Formatter_Simple($format);
  23. ]]></programlisting>
  24. </para>
  25. <para>
  26. Ein Formatter wird einem individuellen Writer Objekt gesetzt durch verwenden der <code>setFormatter()</code>
  27. Methode des Writer's:
  28. <programlisting role="php"><![CDATA[
  29. $writer = new Zend_Log_Writer_Stream('php://output');
  30. $formatter = new Zend_Log_Formatter_Simple('Hallo %message%' . PHP_EOL);
  31. $writer->setFormatter($formatter);
  32. $logger = new Zend_Log();
  33. $logger->addWriter($writer);
  34. $logger->info('dort');
  35. // Gibt "Hallo dort" aus
  36. ]]></programlisting>
  37. </para>
  38. <para>
  39. Der Konstruktor von <classname>Zend_Log_Formatter_Simple</classname> akzeptiert einen einzelnen Parameter: Den
  40. Format String. Dieser String enthält Schlüssel die durch Prozentzeichen begrenzt sind
  41. (z.B. <code>%message%</code>). Der Format String kann jeden Schlüssel des Event Data Arrays enthalten.
  42. Die Standardschlüssel können durch Verwendung der DEFAULT_FORMAT Konstante von
  43. <classname>Zend_Log_Formatter_Simple</classname> empfangen werden.
  44. </para>
  45. </sect2>
  46. <sect2 id="zend.log.formatters.xml">
  47. <title>In XML formatieren</title>
  48. <para>
  49. <classname>Zend_Log_Formatter_Xml</classname> formatiert Log Daten in einen XML String. Standardmäßig loggt er
  50. automatisch alle Elemente des Event Data Arrays:
  51. <programlisting role="php"><![CDATA[
  52. $writer = new Zend_Log_Writer_Stream('php://output');
  53. $formatter = new Zend_Log_Formatter_Xml();
  54. $writer->setFormatter($formatter);
  55. $logger = new Zend_Log();
  56. $logger->addWriter($writer);
  57. $logger->info('Informative Nachricht');
  58. ]]></programlisting>
  59. </para>
  60. <para>
  61. Der obige Code gibt das folgende XML aus (Leerzeichen werden für Klarstellung hinzugefügt):
  62. <programlisting role="xml"><![CDATA[
  63. <logEntry>
  64. <timestamp>2007-04-06T07:24:37-07:00</timestamp>
  65. <message>Informative Nachricht</message>
  66. <priority>6</priority>
  67. <priorityName>INFO</priorityName>
  68. </logEntry>
  69. ]]></programlisting>
  70. </para>
  71. <para>
  72. Es ist möglich das Root Element anzupassen sowie ein Mapping von XML Elementen zu den Elementen im
  73. Event Data Array zu definieren. Der Konstruktor von <classname>Zend_Log_Formatter_Xml</classname> akzeptiert
  74. einen String mit dem Namen des Root Elements als ersten Parameter und ein assoziatives Array mit den
  75. gemappten Elementen als zweiten Parameter:
  76. <programlisting role="php"><![CDATA[
  77. $writer = new Zend_Log_Writer_Stream('php://output');
  78. $formatter = new Zend_Log_Formatter_Xml('log',
  79. array('msg' => 'message',
  80. 'level' => 'priorityName')
  81. );
  82. $writer->setFormatter($formatter);
  83. $logger = new Zend_Log();
  84. $logger->addWriter($writer);
  85. $logger->info('Informative Nachricht');
  86. ]]></programlisting>
  87. Der obige Code ändert das Root Element von seinem Standard <code>logEntry</code> zu <code>log</code>.
  88. Er mappt auch das Element <code>msg</code> zum Event Daten Element <code>message</code>. Das ergibt die
  89. folgende Ausgabe:
  90. <programlisting role="xml"><![CDATA[
  91. <log>
  92. <msg>Informative Nachricht</msg>
  93. <level>INFO</level>
  94. </log>
  95. ]]></programlisting>
  96. </para>
  97. </sect2>
  98. </sect1>