pearのlogパッケージを使ってみた

pearのlogパッケージを使ってみた。

pearだとLogginの中のLogっていうパッケージ名。

System_Daemonとかだと実際のファイルの位置とか、pearディレクトリ以下の、System/Daemon.phpっていうところにあるんだけど、Logパッケージはpear直下にLog.phpという名前である。

これってどういうことなのかな。よくわかんない。MDB2とかも直下にあるけどね。

元々はpearのSystem_Daemonでsyslogの出力ができないか模索してて、無さそうだったので勝手にパッチ書いて機能を追加しようとしてた。

そんな折、ソースコードを見てみるとusePEARLogInstanceなんていう文字が。


require_once('Log.php');

'usePEARLogInstance' => array(
'type' => 'boolean|object',
'default' => false,
'punch' => 'Accepts a PEAR_Log instance to handle all logging',
'detail' => 'This will replace System_Daemon\'s own logging facilit\
y',
'required' => true,
),

早速これを使ってログを吐き出させてみる。

元々System_Daemonをラッピングするようなクラスを作っているので、そこの初期化とかさせるところにLogインスタンスを作る。


require_once('Log.php');

public function start($appname, $port){
$log = Log::singleton('syslog', 'LOG_USER', $appname);
System_Daemon::setOption("appName", $appname);
System_Daemon::setOption('logFilePosition', true);
System_Daemon::setOption('usePEARLogInstance', $log);
System_Daemon::start();

引数などはマニュアル参照。このパッケージはpear形式なマニュアルがない代わりに公式ページにあるタイプ。かなり整備されてる感じ。まだほとんど読んでないけど、きっと困ったときに何とかなるであろう感じ。

System_Daemonももうちょっとマニュアルが整備されればなー、って思ってしまう。もうかなりできあがったパッケージだと思うんだけどな。

で、実際に動かしたら何のことはなくちゃんと動いてくれた。

ログファシリティはデーモンだったのでLOG_USERで送ってタグをデーモンのappnameにして受け取るようにした。

コメントを残す