Zend_Log-Formatters.xml 4.4 KB

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