ログを取る[Pear::Log]
Pear にLog(1.9.3)とロギングユーティリティパッケージがあります。
ログを取ることで、デバッグがしやすくなったり、運用状況の把握が出来たりします。
ログを取るには、 Log クラスの factory関数 又は、 singleton関数 を使用してインスタンス を作成します。 singleton では、引数の内容毎にそれぞれインスタンスが作成されます。 (例えば、fileに出力するインスタンスとMailに出力するインスタンス)
singleton関数では、引数をシリアライズし配列のキーとしています。factory関数は
$handler = strtolower($handler);
$class = 'Log_' . $handler;
$classfile = 'Log/' . $handler . '.php';
上記のようになっており、指定されたハンドラに応じて対応したクラスをインスタンス化しています。
ログの出力先(ハンドラ)は、次のものがあります。
- console
- display
- error_log
- file
- null
- sql
- sqlite
- syslog
- win
どのハンドラを使用するかによってインスタンス化する際の引数が変わります。
fileハンドラの場合
ファイルを使用する場合、第一引数に’file'、第二引数に保存先ファイル名、第三引数に 識別(ラベル)、第四引数にハンドラのオプション、最後にどのレベルまでを対象とするか を指定します。デフォルトは、PEAR_LOG_DEBUGになっています。
require_once "Log.php";
$conf = array('mode'=>0644,'timeFormat'=>'%Y/%m/%d %H:%M:%S');
$objLog = &Log::singleton('file', 'logfile.log', 'ident', $conf, PEAR_LOG_NOTICE);
$objLog->log("ログ出力です。");
指定できるオプションは、次のようになります。
パラメータ | 型 | デフォルト |
---|---|---|
append | Boolean | true |
locking | Boolean | false |
mode | Integer | 0644 |
dirmode | Integer | 0755 |
lineFormat | String | ‘%1$s %2$s [%3$s] %4$s’ |
timeFormat | String | ‘%b %d %H:%M:%S’ |
eol | String | \n |
ログの出力
ログを出力するには、log関数を使用するか各レベル用に用意された関数を使用します。
log関数は、メッセージとログのレベルを引数に指定します。各レベル用の関数は、 メッセージのみを渡します。レベルは、次のように定義されています。
1.PEAR_LOG_EMERG
2.PEAR_LOG_ALERT
3.PEAR_LOG_CRIT
4.PEAR_LOG_ERR
5.PEAR_LOG_WARNING
6.PEAR_LOG_NOTICE
7.PEAR_LOG_INFO
8.PEAR_LOG_DEBUG
実際の使い方は、次のようになります。
require_once "Log.php";
$conf = array('mode'=>0644,'timeFormat'=>'%Y/%m/%d %H:%M:%S');
$objLog = &Log::singleton('file', 'logfile.log', 'ident');
$objLog->log("ログ出力です。",PEAR_LOG_DEBUG);
$objLog->emerg("emergなメッセージ");
$objLog->alert("alertなメッセージ");
$objLog->crit("critなメッセージ");
$objLog->err("errなメッセージ");
$objLog->warning("warningなメッセージ");
$objLog->notice("noticeなメッセージ");
$objLog->info("infoなメッセージ");
$objLog->debug("debugなメッセージ");