Zend_Log-Formatters.xml 4.8 KB

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