# Zend Server モニターへの書き込み

`Zend_Log_Writer_ZendMonitor` では、Zend Server のモニター API を介してイベントを記録できます。 これにより、アプリケーション環境全体のログ・メッセージを一箇所に集約できます。 内部的には、それは単に Zend モニター API 由来の `monitor_custom_event()` 関数を使用します。

モニター API で特に役立つ機能は、 ログ・メッセージと一緒に任意のカスタム情報を指定できることです。 たとえば、例外を記録したい場合、まさにその例外メッセージを記録できません。 しかし、関数に例外オブジェクトを全て渡せます。 そして、Zend Server イベント・モニターの内部でオブジェクトを調査できます。

## Zend モニターがインストールされ、使用可能にされなければいけません

このログ・ライタを使用するには、Zend モニターがインストールされ、使用可能にされなければなりません。 しかしながら、Zend モニターが検出されない場合、`NULL` ロガーとして単純に動作するように設計されています。

`ZendMonitor`ログ・ライタのインスタンス生成は特記するまでもありません。

    $writer = new Zend_Log_Writer_ZendMonitor();
    $log    = new Zend_Log($writer);

それから、通常通り単純にメッセージを記録します。

    $log->info('This is a message');

イベントと共に記録する追加の情報を指定したい場合は、 ２番目の引数でその情報を渡します。

    $log->info('Exception occurred', $e);

２番目の引数は、スカラー、オブジェクトまたは配列です。 情報の複数の部分を渡す必要があるならば、そうする最高の方法は連想配列を渡すことです。

    $log->info('Exception occurred', array(
        'request'   => $request,
        'exception' => $e,
    ));

Zend Server 内では、イベントは「カスタム・イベント」として記録されます。 「モニター」タブから「イベント」項目を選び、カスタム・イベントを見るために、「カスタム」上で絞り込みます。

Zend Server のモニター・ダッシュボードのイベント

このスクリーン・ショットで、一覧表示される最初の2つのイベントは、 `ZendMonitor`ログ・ライタを通して記録されるカスタム・イベントです。 関連した情報を全て見るには、イベントをクリックします。

Zend Server のモニターのイベント詳細

「カスタム」タブをクリックすると、ログ収集メソッドに２番目の引数を渡して記録した 追加の情報を全て詳しく表示します。 この情報は、`info` キーとして記録されます。 この例では、リクエスト・オブジェクトが記録されることを確認できます。

## Zend_Application との統合

`zf.sh` と `zf.bat` コマンドは、デフォルトで `Zend_Application` ログ・リソース用の構成を追加します。 そして、それは `ZendMonitor` ログ・ライタ用の構成を含みます。 さらに、`ErrorController` は、アプリケーション例外を記録するために 構成されたロガーを使います。それは、デフォルトでZend モニター・イベント統合とともに提供します。

前述のように、モニター API が PHP インストールで検出されない場合、 ロガーは単純に `NULL` ロガーとして動作します。