PEAR::Log::factory() Factory Method
PEARの中で好んで使っているものにLogがあります。
ロギングの実装は面倒ですから。
ところで、このPEAR::Logは日本語のマニュアルが用意されていません。*1
http://pear.php.net/manual/ja/package.logging.log.php
ですので、何回かにわけてLogのことについていくつか書いておこうと思います。
オンラインドキュメントの順番に沿って、まずは Log::factory()から。
function &factory($handler, $name = '', $ident = '', $conf = array(), $level = PEAR_LOG_DEBUG)
- $handler
- 作成したいLogインスタンスの形式です。fileを指定すればファイル書き込みですし、sqlを指定すればDBに書き込まれるわけです。
- $name
- 指定したhandlerにより意味合いが異なってしまう引数です。$nameという名付けは誤解を産む?
- $ident
- identityです。主に、ログに付けられることが多いです。書き込まれるLogを結びつけるグループ名と思ってもいいかと。
- $conf
- オプション設定となる引数です。Map形式。
- $level
- ここで指定したログレベル以上がこのLogインスタンスで書き込みを行えるようになります。書き込みレベル下限です。*2
例1) file
<?php require_once('Log.php'); $fileLog = Log::factory( 'file', './test.log', 'Hoge', array('append' => 1, 'locking' => 1, 'mode' => 0644, 'eol' => "\n"), PEAR_LOG_INFO); $fileLog->log('foo?', PEAR_LOG_INFO); // (1) $fileLog->log('bar!', PEAR_LOG_NOTICE); // (2) $fileLog->log('fail', PEAR_LOG_DEBUG); // (3) ?>
この結果は以下のとおりです。
Dec 06 00:36:38 Hoge [info] foo? Dec 06 00:36:38 Hoge [notice] bar!
時刻の後に、$identの文字列が入り、[]の間にログレベルが入ります。
そのおかげでログが非常に追いかけやすくなります。*3
$levelをPEAR_LOG_INFOに設定したので、(3)のDEBUGレベルがログ対象に入りません。*4
使いこなすようになってくると、このレベル設定はすごくありがたく感じるのですが、それはまたのお話という事で。