Zend_Log-Writers-ZendMonitor.xml 4.8 KB

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