# MongoLog クラス

(PECL mongo >=1.2.3)

## はじめに

ログ機能を使うと、ドライバが何をしているのかに関する詳細な情報を取得できます。 ログ機能はデフォルトでは無効になっています。しかし、このクラスを使うと、 ドライバの特定の部分について指定したレベルでのログ出力を有効にできます。 たとえば次のように使います。

`<?php
// すべてのログ出力を有効にします
MongoLog::setLevel(MongoLog::ALL); // すべてのログレベル
MongoLog::setModule(MongoLog::ALL); // ドライバのすべての部分
// レプリカセットのフェイルオーバーに関する重大なイベントを表示します
MongoLog::setLevel(MongoLog::INFO);
MongoLog::setModule(MongoLog::RS);
// レプリカセットと接続に関する info および diagnostic レベルのイベントを表示します
MongoLog::setLevel(MongoLog::INFO|MongoLog::FINE);
MongoLog::setModule(MongoLog::RS|MongoLog::CON);
?>`

> 注意:

> デフォルトでは、MongoLog はすべてのログメッセージを PHP の notice として発行します。 利用する SAPI によって、 このメッセージが stderr に送られる (CLI の場合) こともあれば、ウェブサーバーのエラーログに書き出されることもあります、 MongoLog を設定したのにログメッセージが期待通りに出力されない場合は、 error_reporting の設定に `E_NOTICE` が含まれているかどうかと、 display_errors が on になっているかどうかを確認しましょう。

## クラス概要

MongoLog {
/* 定数 */
const int NONE = 0 ;
const int ALL = 31 ;
レベル定数 {
const int WARNING = 1 ;
const int INFO = 2 ;
const int FINE = 4 ;
モジュール定数 {
const int RS = 1 ;
const int POOL = 1 ;
const int CON = 2 ;
const int IO = 4 ;
const int SERVER = 8 ;
const int PARSE = 16 ;
/* フィールド */
private static int $callback ;
private static int $level ;
private static int $module ;
/* メソッド */
public static getCallback ( void ) : callable
public static getLevel ( void ) : int
public static getModule ( void ) : int
public static setCallback ( callable `$log_function` ) : void
public static setLevel ( int `$level` ) : void
public static setModule ( int `$module` ) : void
}

## 定義済み定数

## MongoLog 定数

これらの定数は MongoLog::setLevel() および MongoLog::setModule() の両方で使えます。

`MongoLog::NONE`
  ログ出力を無効にする。
`MongoLog::ALL`
  すべてをログ出力する。

## MongoLog レベル定数

これらの定数は MongoLog::setLevel() で使えます。

`MongoLog::WARNING`
  これは、何かおかしいけれども例外を発生させるほどではないできごと (復旧可能な接続エラーなど) を記録します。
`MongoLog::INFO`
  管理者にとっては有用だと思われるが 特に注目には値しないできごと (オプションのパース、認証処理など) を記録します。
`MongoLog::FINE`
  ドライバの動作における大半のできごと (サーバーの選択やソケット通信など) を記録します。記録対象のモジュールにもよりますが、 ログがノイズまみれになる可能性もあります。主な用途はデバッグです。

## MongoLog モジュール定数

これらの定数は MongoLog::setModule() で使えます。

`MongoLog::CON`
  接続のアクティビティを記録します。 新規接続の作成、認証、ping、タイムアウトなどです。
`MongoLog::IO`
  データベースとのトラフィックを記録します。 ちょっとした小物プログラムでない限り、 これを有効にすると大量のログメッセージが記録されます。
`MongoLog::PARSE`
  MongoClient を作成するときの、 接続文字列やオプションのパースを記録します。
`MongoLog::POOL`
  かつては接続プールの活動を記録していました。今は非推奨で、 `MongoLog::RS` のエイリアスとなっています。
`MongoLog::RS`
  レプリカセットの活動を記録します。フェイルオーバーや、 優先読み込みの選択などです。
`MongoLog::SERVER`
  かつてはサーバーの状態の変更を記録していました。今は非推奨で、 `MongoLog::RS` のエイリアスとなっています。

## 変更履歴

バージョン | 説明
--- | ---
1.3.0 | `MongoLog::CON` が追加され、 `MongoLog::POOL` と `MongoLog::SERVER` が非推奨になりました。

## 目次

- MongoLog::getCallback — 以前に設定されたコールバック関数の名前を取得する
- MongoLog::getLevel — 現在記録されているログレベルを取得する
- MongoLog::getModule — 現在ログを記録しているモジュールを取得する
- MongoLog::setCallback — イベントに対応して呼ばれるコールバック関数を設定する
- MongoLog::setLevel — 記録するログレベルを設定する
- MongoLog::setModule — ログに記録するモジュールを設定する