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
使いこなすようになってくると、このレベル設定はすごくありがたく感じるのですが、それはまたのお話という事で。

*1:PEAR本には載ってるのでそちらも読んでみるといいでしょう

*2:内部的に Log::UPTO($level) が実行されることがそれを物語っています

*3:「アプリケーションコード+利用者識別コード」というidentをよく使います

*4:ログレベルに関しては後々書きたいと思います