Zend_Log-Writers-Mail.xml 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 24249 -->
  3. <!-- Reviewed: no -->
  4. <sect2 id="zend.log.writers.mail">
  5. <title>Écrire vers un courriel</title>
  6. <para>
  7. <classname>Zend_Log_Writer_Mail</classname> va écrire les entrées du log dans un message
  8. courriel en utilisant <classname>Zend_Mail</classname>. Le constructeur de
  9. <classname>Zend_Log_Writer_Mail</classname> requière un objet
  10. <classname>Zend_Mail</classname> et optionnellement un objet
  11. <classname>Zend_Layout</classname>.
  12. </para>
  13. <para>
  14. Le cas d'utilisation principal de <classname>Zend_Log_Writer_Mail</classname> est
  15. la notification les développeurs, les administrateurs ou toute personne concernée,
  16. d'une erreur qui peut survenir dans des scripts.
  17. <classname>Zend_Log_Writer_Mail</classname> a été crée avec l'idée que si quelque chose
  18. ne tourne pas rond, une intervention humaine est nécessaire.
  19. </para>
  20. <para>
  21. Voici un exemple d'utilisation basique&#160;:
  22. </para>
  23. <programlisting language="php"><![CDATA[
  24. $mail = new Zend_Mail();
  25. $mail->setFrom('errors@example.org')
  26. ->addTo('project_developers@example.org');
  27. $writer = new Zend_Log_Writer_Mail($mail);
  28. // Ecrit le sujet. Un résumé des erreurs est ajouté à la suite
  29. $writer->setSubjectPrependText('Errors with script foo.php');
  30. // Limite uniquement au niveau Warning ou supérieur
  31. $writer->addFilter(Zend_Log::WARN);
  32. $log = new Zend_Log();
  33. $log->addWriter($writer);
  34. // Essai
  35. $log->error('unable to connect to database');
  36. // A la fermeture, Zend_Mail::send() est inviqué et concernera
  37. // tous les logs passés dans le filtre.
  38. ]]></programlisting>
  39. <para>
  40. <classname>Zend_Log_Writer_Mail</classname> utilisera un corps de message
  41. en texte plein (plain text) par défaut.
  42. </para>
  43. <para>
  44. Le filtre est géré. Par exemple si le filtre est réglé sur Warnings, et que
  45. 2 évènements warnings et 5 évènements erreurs se produisent, alors 7
  46. évènements seront envoyés.
  47. </para>
  48. <sect3 id="zend.log.writers.mail.layoutusage">
  49. <title>Utilisation avec Zend_Layout</title>
  50. <para>
  51. Une instance de <classname>Zend_Layout</classname> peut être utilisée pour générer
  52. du HTML qui fera partie du courriel multipart. Si <classname>Zend_Layout</classname>
  53. est utilisé, <classname>Zend_Log_Writer_Mail</classname> considérera que le corps HTML
  54. du message sera la valeur du rendu de <classname>Zend_Layout</classname>.
  55. </para>
  56. <para>
  57. En utilisant <classname>Zend_Log_Writer_Mail</classname> avec un objet
  58. <classname>Zend_Layout</classname> vous pouvez utiliser un formateur
  59. personnalisé grâce à <methodname>setLayoutFormatter()</methodname>. Si aucun formateur spécifique
  60. <classname>Zend_Layout</classname> n'est indiqué, le formateur en cours d'utilisation
  61. sera appelé. Voici un exemple&#160;:
  62. </para>
  63. <programlisting language="php"><![CDATA[
  64. $mail = new Zend_Mail();
  65. $mail->setFrom('errors@example.org')
  66. ->addTo('project_developers@example.org');
  67. // Nous ne spécifions pas le sujet du message dans l'objet Zend_Mail !
  68. // Utilisons un simple objet Zend_Layout
  69. $layout = new Zend_Layout();
  70. // Créons un formateur à base de listes
  71. $layoutFormatter = new Zend_Log_Formatter_Simple(
  72. '<li>' . Zend_Log_Formatter_Simple::DEFAULT_FORMAT . '</li>'
  73. );
  74. $writer = new Zend_Log_Writer_Mail($mail, $layout);
  75. // Appliquons le formateur sur le rendu de Zend_Layout.
  76. $writer->setLayoutFormatter($layoutFormatter);
  77. $writer->setSubjectPrependText('Errors with script foo.php');
  78. $writer->addFilter(Zend_Log::WARN);
  79. $log = new Zend_Log();
  80. $log->addWriter($writer);
  81. // essai
  82. $log->error('unable to connect to database');
  83. // A la fermeture, Zend_Mail::send() est inviqué et concernera
  84. // tous les logs passés dans le filtre.
  85. // l'email contiendra une partie "plain text", et une partie HTML
  86. ]]></programlisting>
  87. </sect3>
  88. <sect3 id="zend.log.writers.mail.dynamicsubjectline">
  89. <title>Ligne du sujet dynamique</title>
  90. <para>
  91. La méthode <methodname>setSubjectPrependText()</methodname> est utilisée à la place de
  92. <methodname>Zend_Mail::setSubject()</methodname> pour que la ligne de sujet dans le courriel
  93. soit générée dynamiquement avant l'envoi de ce dernier. Par exemple, si le texte indiqué
  94. est "Erreurs depuis ce script", le sujet du courriel généré par
  95. <classname>Zend_Log_Writer_Mail</classname> avec 2 warnings et 5 errors sera alors
  96. "Erreurs depuis ce script (warn = 2; error = 5)". Si le sujet n'est pas indiqué
  97. via <classname>Zend_Log_Writer_Mail</classname>, la ligne de sujet
  98. de <classname>Zend_Mail</classname>, si il y en a une, sera utilisée.
  99. </para>
  100. </sect3>
  101. <sect3 id="zend.log.writers.mail.caveats">
  102. <title>Attention</title>
  103. <para>
  104. Envoyer des rapports d'erreurs par emails peut être dangereux.
  105. Si votre système de surveillance d'erreurs n'est pas correct ou a un problème,
  106. vous risquez de vous retrouver inondé de tonnes d'emails en provenance de
  107. votre application.
  108. </para>
  109. <para>
  110. A l'heure actuelle, il n'existe dans <classname>Zend_Log_Writer_Mail</classname>
  111. aucun système de limitation ou de contrôle du nombre ou de la fréquence d'envoi
  112. des emails. Si vous nécessitez un tel système, vous devrez l'implémenter vous-même.
  113. </para>
  114. <para>
  115. Encore une fois, l'unique but de <classname>Zend_Log_Writer_Mail</classname>
  116. est la notification d'un humain au sujet d'une erreur. Si ce système est
  117. clairement contrôlé, alors il peut devenir un avantage très appréciable.
  118. </para>
  119. </sect3>
  120. </sect2>