Zend_Log-Formatters.xml 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 24249 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.log.formatters">
  5. <title>Formateurs (mise en forme)</title>
  6. <para>
  7. Un formateur est un objet qui est responsable de prendre un tableau <code>event</code>
  8. décrivant un événement de log et produisant une ligne de log formatée sous la forme d'un une
  9. chaîne.
  10. </para>
  11. <para>
  12. Quelques rédacteurs ("Writers") ne fonctionnent pas en terme de ligne et ne peuvent
  13. pas utiliser un formateur. Un exemple est le rédacteur de base de données, qui insère les
  14. items d'événement directement en colonnes de base de données. Pour les rédacteurs qui ne
  15. peuvent pas supporter un formateur, une exception est levée si vous essayez d'affecter un
  16. formateur.
  17. </para>
  18. <sect2 id="zend.log.formatters.simple">
  19. <title>Formatage simple</title>
  20. <para>
  21. <classname>Zend_Log_Formatter_Simple</classname> est le formateur par défaut. Il
  22. est configuré automatiquement quand vous n'indiquez aucun formateur. La configuration
  23. par défaut est équivalente à ce qui suit : <programlisting language="php"><![CDATA[
  24. $format = '%timestamp% %priorityName% (%priority%): %message%' . PHP_EOL;
  25. $formatter = new Zend_Log_Formatter_Simple($format);
  26. ]]></programlisting></para>
  27. <para>
  28. Un formateur est affecté à un objet individuel de rédacteur en utilisant la
  29. méthode <methodname>setFormatter()</methodname> du rédacteur : <programlisting language="php"><![CDATA[
  30. $redacteur = new Zend_Log_Writer_Stream('php://output');
  31. $formateur = new Zend_Log_Formatter_Simple('Bonjour %message%' . PHP_EOL);
  32. $redacteur->setFormatter($formateur);
  33. $logger = new Zend_Log();
  34. $logger->addWriter($redacteur);
  35. $logger->info('Monde');
  36. // affiche "Bonjour Monde"
  37. ]]></programlisting></para>
  38. <para>
  39. Le constructeur de <classname>Zend_Log_Formatter_Simple</classname> accepte un
  40. paramètre unique : la chaîne de formatage. Cette chaîne contient des clés entourées par
  41. le signe pourcentage (par exemple %message%). La chaîne de formatage peut contenir
  42. n'importe quelle clé du tableau de données d'événement. Vous pouvez récupérer les clés
  43. par défaut en utilisant la constante DEFAULT_FORMAT de
  44. <classname>Zend_Log_Formatter_Simple</classname>.
  45. </para>
  46. </sect2>
  47. <sect2 id="zend.log.formatters.xml">
  48. <title>Formater vers le XML</title>
  49. <para>
  50. <classname>Zend_Log_Formatter_Xml</classname> formate des données de log dans des
  51. chaînes de type XML. Par défaut, il note automatiquement tout le tableau de données
  52. d'événements : <programlisting language="php"><![CDATA[
  53. $redacteur = new Zend_Log_Writer_Stream('php://output');
  54. $formateur = new Zend_Log_Formatter_Xml();
  55. $redacteur->setFormatter($formateur);
  56. $logger = new Zend_Log();
  57. $logger->addWriter($redacteur);
  58. $logger->info("Message d'information");
  59. ]]></programlisting></para>
  60. <para>
  61. Le code ci-dessus affiche le XML suivant (des espaces supplémentaires sont ajoutés
  62. pour la clarté) : <programlisting language="xml"><![CDATA[
  63. <logEntry>
  64. <timestamp>2007-04-06T07:24:37-07:00</timestamp>
  65. <message>Message d'information</message>
  66. <priority>6</priority>
  67. <priorityName>INFO</priorityName>
  68. </logEntry>
  69. ]]></programlisting></para>
  70. <para>
  71. Il est possible d'adapter l'élément racine comme indiquent faire correspondre les
  72. éléments XML au tableau de données d'évènements. Le constructeur de
  73. <classname>Zend_Log_Formatter_Xml</classname> accepte une chaîne avec le nom de
  74. l'élément racine comme premier paramètre et un tableau associatif avec les éléments de
  75. correspondance comme deuxième paramètre : <programlisting language="php"><![CDATA[
  76. $redacteur = new Zend_Log_Writer_Stream('php://output');
  77. $formateur = new Zend_Log_Formatter_Xml('log',
  78. array('msg' => 'message',
  79. 'niveau' => 'priorityName'));
  80. $redacteur->setFormatter($formateur);
  81. $logger = new Zend_Log();
  82. $logger->addWriter($redacteur);
  83. $logger->info("Message d'information");
  84. ]]></programlisting> Le code ci-dessus change l'élément racine par défaut de
  85. <code>logEntry</code> en <code>log</code>. Il fait correspondre également les éléments
  86. <code>msg</code> au <code>message</code> de l'item de donnée d'événement. Ceci a comme
  87. conséquence l'affichage suivant : <programlisting language="xml"><![CDATA[
  88. <log>
  89. <msg>Message d'information</msg>
  90. <niveau>INFO</niveau>
  91. </log>
  92. ]]></programlisting></para>
  93. </sect2>
  94. </sect1>