<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 24249 -->
<!-- Reviewed: no -->
<sect2 id="zend.log.writers.zendmonitor">
    <title>Ecrire vers le moniteur Zend Server</title>

    <para>
        <classname>Zend_Log_Writer_ZendMonitor</classname> vous permet de journaliser des évènements
        via l'API de Zend Server. Vous pouvez alors aggréger des messages de journal pour l'application
        et tout son environnement, ceci vers un seul endroit. En interne, cet objet utilise simplement la
        fonction <methodname>monitor_custom_event()</methodname> issue de Zend Monitor.
    </para>

    <para>
        Une caractéristique particulière de l'API Monitor est que vous pouvez spécifier n'importe quelle
        information dans le journal. Par exemple, journaliser une exception est possible en journalisant
        tout l'objet Exception d'un coup et pas juste son message. L'objet sera alors visible et analysable
        via le moniteur d'évènement de Zend Server.
    </para>

    <note>
        <title>Zend Monitor doit être installé et activé</title>

        <para>
            Pour utiliser cet objet d'écriture, Zend Monitor doit petre installé et activé.
            Si ce n'est pas le cas, alors l'objet d'écriture agira de manière transparente et ne fera
            rien du tout.
        </para>
    </note>

    <para>
        Instancier l'objet d'écriture <classname>ZendMonitor</classname> est très simple:
    </para>

    <programlisting language="php"><![CDATA[
$writer = new Zend_Log_Writer_ZendMonitor();
$log    = new Zend_Log($writer);
]]></programlisting>

    <para>
        Ensuite, journalisez vos évènements comme d'habitude:
    </para>

    <programlisting language="php"><![CDATA[
$log->info('Voici un message');
]]></programlisting>

    <para>
        Vous pouvez ajouter des informations à journaliser, passez les comme second paramètre:
    </para>

    <programlisting language="php"><![CDATA[
$log->info('Exception rencontrée', $e);
]]></programlisting>

    <para>
        Ce deuxième paramètre peut être de type scalaire, objet, ou tableau; si vous souhaitez
        passer plusieurs informations d'un seul coup, utilisez un tableau.
    </para>

    <programlisting language="php"><![CDATA[
$log->info('Exception rencontrée', array(
    'request'   => $request,
    'exception' => $e,
));
]]></programlisting>

    <para>
        Au sein de Zend Server, votre évènement est enregistré comme un "évènement personnalisé" (custom event).
        Depuis l'onglet "Monitor", sélectionnez le sous menu "Evènements"(Events), et utilisez ensuite le filtre
        "Personnalisé"(Custom).
    </para>

    <para>
        <inlinegraphic fileref="figures/zend.log.writers.zendmonitor-events.png" format="PNG" />
    </para>

    <para>
        Evènements dans le récapitulatif Zend Server Monitor
    </para>

    <para>
        Sur cette image, les deux premiers évènements listés sont des évènements personnalisés enregistré via
        l'objet d'écriture <classname>ZendMonitor</classname>. Cliquez alors sur un évènement pour voir toutes ses
        informations.
    </para>

    <para>
        <inlinegraphic fileref="figures/zend.log.writers.zendmonitor-event.png" format="PNG" />
    </para>

    <para>
        Détails de l'évènement dans Zend Server Monitor
    </para>

    <para>
        Cliquer sur le sous menu "Personnalisé"(Custom) montre les détails, c'est à dire ce que vous avez passé
        comme deuxième argument à la méthode de journalisation. Cet information est enregistrée sous la clé
        <varname>info</varname>; et vous pouvez voir que l'objet de requête a été enregistré dans cet exemple.
    </para>

    <note>
        <title>Intégration avec Zend_Application</title>

        <para>
            Par défaut, les commandes <command>zf.sh</command> et <command>zf.bat</command> ajoute une
            configuration pour la ressource 'log' de<link
                linkend="zend.application.available-resources.log"><classname>Zend_Application</classname>
                </link>, elle inclut la configuration pour l'objet d'écriture du journal
            <classname>ZendMonitor</classname>. Aussi, le
            <classname>ErrorController</classname> utilise ce journal pour journaliser les exceptions de
            l'application.
        </para>

        <para>
            Comme dit précedemment, si l'API de Zend Monitor API n'est pas détectée sur votre installation de PHP,
            alors le journal ne fera rien du tout.
        </para>
    </note>
</sect2>
