Zend_Log-Formatters.xml 4.4 KB

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