Zend_Log-Writers.xml 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 24249 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.log.writers" xmlns:xi="http://www.w3.org/2001/XInclude">
  5. <title>Rédacteurs (Writers)</title>
  6. <para>
  7. Un rédacteur est un objet qui hérite de
  8. <classname>Zend_Log_Writer_Abstract</classname>. La responsabilité d'un rédacteur est
  9. d'enregistrer des données de log dans un stockage particulier.
  10. </para>
  11. <sect2 id="zend.log.writers.stream">
  12. <title>Écrire vers un flux (stream)</title>
  13. <para>
  14. <classname>Zend_Log_Writer_Stream</classname> envoie des données de log à un
  15. <ulink url="http://www.php.net/stream">flux de <acronym>PHP</acronym></ulink>.
  16. </para>
  17. <para>
  18. Pour écrire des données de log dans le buffer d'affichage de PHP, il faut utiliser
  19. l'URL <code>php://output</code>. Alternativement, vous pouvez préférer envoyer des
  20. données de log directement à un flux comme <constant>STDERR</constant>
  21. (<code>php://stderr</code>). <programlisting language="php"><![CDATA[
  22. $redacteur = new Zend_Log_Writer_Stream('php://output');
  23. $logger = new Zend_Log($redacteur);
  24. $logger->info("Message d'information");
  25. ]]></programlisting></para>
  26. <para>
  27. Pour écrire des données dans un fichier, employer un des <ulink
  28. url="http://www.php.net/manual/fr/wrappers.php#wrappers.file">Filesystem URLs</ulink>:
  29. <programlisting language="php"><![CDATA[
  30. $redacteur = new Zend_Log_Writer_Stream('/chemin/vers/fichierdelog');
  31. $logger = new Zend_Log($redacteur);
  32. $logger->info("Message d'information");
  33. ]]></programlisting> Par défaut, le flux s'ouvre en mode d'ajout (<code>"a"</code>). Pour
  34. l'ouvrir avec un mode différent, le constructeur de
  35. <classname>Zend_Log_Writer_Stream</classname> accepte un deuxième paramètre facultatif
  36. pour le mode.
  37. </para>
  38. <para>
  39. Le constructeur de <classname>Zend_Log_Writer_Stream</classname> accepte également
  40. une ressource existante de flux : <programlisting language="php"><![CDATA[
  41. $flux = @fopen('/chemin/vers/fichierdelog', 'a', false);
  42. if (! $flux) {
  43. throw new Exception('Impossible d\'ouvrir le flux');
  44. }
  45. $redacteur = new Zend_Log_Writer_Stream($flux);
  46. $logger = new Zend_Log($redacteur);
  47. $logger->info("Message d'information");
  48. ]]></programlisting> Vous ne pouvez pas indiquer le mode pour des ressources existantes de flux.
  49. Le faire entraînera une <classname>Zend_Log_Exception</classname>.
  50. </para>
  51. </sect2>
  52. <sect2 id="zend.log.writers.database">
  53. <title>Écrire dans des bases de données</title>
  54. <para>
  55. <classname>Zend_Log_Writer_Db</classname> écrit les informations de log dans une
  56. table de base de données en utilisant <classname>Zend_Db</classname>. Le constructeur de
  57. <classname>Zend_Log_Writer_Db</classname> reçoit une instance de
  58. <classname>Zend_Db_Adapter</classname>, un nom de table, et un plan de correspondance
  59. entre les colonnes de la base de données et les données élémentaires d'événement :
  60. <programlisting language="php"><![CDATA[
  61. $parametres = array ('host' => '127.0.0.1',
  62. 'username' => 'malory',
  63. 'password' => '******',
  64. 'dbname' => 'camelot');
  65. $db = Zend_Db::factory('PDO_MYSQL', $parametres);
  66. $planDeCorrespondance = array('niveau' => 'priority', 'msg' => 'message');
  67. $redacteur = new Zend_Log_Writer_Db($db,
  68. 'nom_de_la_table_de_log',
  69. $planDeCorrespondance);
  70. $logger = new Zend_Log($redacteur);
  71. $logger->info("Message d'information");
  72. ]]></programlisting> L'exemple ci-dessus écrit une ligne unique de données de log dans la table
  73. appelée <code>nom_de_la_table_de_log</code>. La colonne de base de données appelée
  74. <code>niveau</code> reçoit le niveau de priorité et la colonne appelée <code>msg</code>
  75. reçoit le message de log.
  76. </para>
  77. </sect2>
  78. <xi:include href="Zend_Log-Writers-Firebug.xml" />
  79. <xi:include href="Zend_Log-Writers-Mail.xml" />
  80. <xi:include href="Zend_Log-Writers-Syslog.xml" />
  81. <xi:include href="Zend_Log-Writers-ZendMonitor.xml">
  82. <xi:fallback>
  83. <xi:include href="../../en/module_specs/Zend_Log-Writers-ZendMonitor.xml" />
  84. </xi:fallback>
  85. </xi:include>
  86. <sect2 id="zend.log.writers.null">
  87. <title>Déraciner les rédacteurs</title>
  88. <para>
  89. Le <classname>Zend_Log_Writer_Null</classname> est une souche qui écrit des
  90. données de log nulle part. Il est utile pour neutraliser le log ou déraciner le log
  91. pendant les essais :<programlisting language="php"><![CDATA[
  92. $redacteur = new Zend_Log_Writer_Null;
  93. $logger = new Zend_Log($redacteur);
  94. // va nulle part
  95. $logger->info("Message d'information");
  96. ]]></programlisting></para>
  97. </sect2>
  98. <sect2 id="zend.log.writers.mock">
  99. <title>Tester avec un simulacre</title>
  100. <para>
  101. Le <classname>Zend_Log_Writer_Mock</classname> est un rédacteur très simple qui
  102. enregistre les données brutes qu'il reçoit dans un tableau exposé comme propriété
  103. publique. <programlisting language="php"><![CDATA[
  104. $simulacre = new Zend_Log_Writer_Mock;
  105. $logger = new Zend_Log($simulacre);
  106. $logger->info("Message d'information");
  107. var_dump($mock->events[0]);
  108. // Array
  109. // (
  110. // [timestamp] => 2007-04-06T07:16:37-07:00
  111. // [message] => Message d'information
  112. // [priority] => 6
  113. // [priorityName] => INFO
  114. // )
  115. ]]></programlisting></para>
  116. <para>
  117. Pour effacer les événements notés dans le simulacre, il faut simplement réaliser
  118. <code>$simulacre-&gt;events = array()</code>.
  119. </para>
  120. </sect2>
  121. <sect2 id="zend.log.writers.compositing">
  122. <title>Additionner les rédacteurs</title>
  123. <para>
  124. Il n'y a aucun objet composite de rédacteurs. Cependant, une instance
  125. d'enregistreur peut écrire vers tout nombre de rédacteurs. Pour faire ceci, employer la
  126. méthode <methodname>addWriter()</methodname> : <programlisting language="php"><![CDATA[
  127. $redacteur1 =
  128. new Zend_Log_Writer_Stream('/chemin/vers/premier/fichierdelog');
  129. $redacteur2 =
  130. new Zend_Log_Writer_Stream('/chemin/vers/second/fichierdelog');
  131. $logger = new Zend_Log();
  132. $logger->addWriter($redacteur1);
  133. $logger->addWriter($redacteur2);
  134. // va dans les 2 rédacteurs
  135. $logger->info("Message d'information");
  136. ]]></programlisting></para>
  137. </sect2>
  138. </sect1>