2
0

Zend_Log-Writers-ZendMonitor.xml 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 24249 -->
  3. <!-- Reviewed: no -->
  4. <sect2 id="zend.log.writers.zendmonitor">
  5. <title>Auf den Zend Server Montior schreiben</title>
  6. <para>
  7. <classname>Zend_Log_Writer_ZendMonitor</classname> erlaubt es Events über Zend Server's
  8. Monitor <acronym>API</acronym> zu loggen. Das erlaubt es die Log Nachrichten für die
  9. Umgebung einer komplette Anwendung an einem einzelnen Ort zu sammeln. Intern verwendet es
  10. einfach die <methodname>monitor_custom_event()</methodname> Funktion der Zend Monitor
  11. <acronym>API</acronym>.
  12. </para>
  13. <para>
  14. Ein relativ nützlichen Feature der Monitor <acronym>API</acronym> ist das Sie es erlaubt
  15. beliebige eigene Informationen zusammen mit der Log Nachricht zu spezifizieren. Wenn man zum
  16. Beispiel eine Exception loggen will, kann man nicht nur die Exception Nachricht loggen,
  17. sondern auch das komplette Exception Objekt an die Funktion übergeben, und das Objekt dann
  18. im Zend Server Event Monitor inspizieren.
  19. </para>
  20. <note>
  21. <title>Zend Monitor muss installiert und aktiviert sein</title>
  22. <para>
  23. Um diesen Log Writer zu verwenden muss Zend Monitor sowohl installiert als auch
  24. aktiviert sein. Trotzdem ist er so designt dass, wenn Zend Monitor nicht gefunden wurde,
  25. er einfach als <constant>NULL</constant> Logger agiert.
  26. </para>
  27. </note>
  28. <para>
  29. Die Instanzierung des <classname>ZendMonitor</classname> Log Writers ist trivial:
  30. </para>
  31. <programlisting language="php"><![CDATA[
  32. $writer = new Zend_Log_Writer_ZendMonitor();
  33. $log = new Zend_Log($writer);
  34. ]]></programlisting>
  35. <para>
  36. Dann können Nachrichten einfach wie gewohnt geloggt werden:
  37. </para>
  38. <programlisting language="php"><![CDATA[
  39. $log->info('Das ist eine Nachricht');
  40. ]]></programlisting>
  41. <para>
  42. Wenn man zusätzliche Informationen spezifizieren will, die mit dem Event geloggt werden
  43. sollen, können diese Informationen in einem zweiten Parameter übergeben werden:
  44. </para>
  45. <programlisting language="php"><![CDATA[
  46. $log->info('Exception gefunden', $e);
  47. ]]></programlisting>
  48. <para>
  49. Der zweite Parameter kann ein Skalar, Objekt oder ein Array sein; wenn man mehrere Teile an
  50. Informationen übergeben will, ist der beste Weg diese als assoziatives Array zu übergeben.
  51. </para>
  52. <programlisting language="php"><![CDATA[
  53. $log->info('Exception gefunden', array(
  54. 'request' => $request,
  55. 'exception' => $e,
  56. ));
  57. ]]></programlisting>
  58. <para>
  59. Im Zend Server wird das Event als "eigenes Event" (custom) geloggt. Vom "Monitor" Tab muss
  60. das "Events" Sub-Element ausgewählt werden und dann der Filter aus "Custom" um eigene Events
  61. zu sehen.
  62. </para>
  63. <para>
  64. <inlinegraphic fileref="figures/zend.log.writers.zendmonitor-events.png" format="PNG" />
  65. </para>
  66. <para>
  67. Events im Dashboard von Zend Server's Monitor
  68. </para>
  69. <para>
  70. In diesem Screenshot sind die ersten zwei angeführten Events eigene Events die über den
  71. <classname>ZendMonitor</classname> Log Writer geloggt wurden. Man kann anschließend auf ein
  72. Event klicken um alle Ihr zugehörigen Informationen zu sehen.
  73. </para>
  74. <para>
  75. <inlinegraphic fileref="figures/zend.log.writers.zendmonitor-event.png" format="PNG" />
  76. </para>
  77. <para>
  78. Event Detail in Zend Server's Monitor
  79. </para>
  80. <para>
  81. Wenn auf das Sub-Tab "Custom" geklickt wird, werden alle extra Informationen angezeigt die
  82. durch die Übergabe des zweiten Arguments an die Logging Methode geloggt wurden. Diese
  83. Informationen werden als <varname>info</varname> Unterschlüssel geloggt; man kann sehen das
  84. in diesem Beispiel das Request Objekt geloggt wurde.
  85. </para>
  86. <note>
  87. <title>Integration mit Zend_Application</title>
  88. <para>
  89. Standardmäßig fügen die Kommandos <command>zf.sh</command> und <command>zf.bat</command>
  90. die Konfguration für die <link
  91. linkend="zend.application.available-resources.log"><classname>Zend_Application</classname>
  92. Log Ressource</link> hinzu, welcher die Konfiguration für den
  93. <classname>ZendMonitor</classname> Log Writer enthält. Zusätzlich verwendet der
  94. <classname>ErrorController</classname> den konfigurierten Logger um Exceptions der
  95. Anwendung zu loggen -- und bietet deshalb standardmäßig die Integration für Events im
  96. Zend Monitor.
  97. </para>
  98. <para>
  99. Wie vorher erwähnt fungiert der Logger, wenn die Monitor <acronym>API</acronym> in der
  100. eigenen <acronym>PHP</acronym> Anwendung nicht erkannt wurde, als
  101. <constant>NULL</constant> Logger.
  102. </para>
  103. </note>
  104. </sect2>