PEARこちらもどうぞ

システム作ったときに、
デバッグしたり、
ページビュー数えたり、
障害対応したりと
なにかとログっていうのが大切になってくる。
そのログの排出先を状況によって切り替えたりするのに便利。



(ノ・・)ン。。。。。。(((●コロコロッ



ログの排出コードってこんな感じですかねぇ。
$file_handler = fopen("pg.log","a");
fwrite( $file_handler , "大変です。サーバーが止まりました。" );
fclose( $file_handler );

単にファイルを作って、
そこにファイルを書き込んでいるだけですが、
ログってそんなもんだと思います。
(O.O;)(o。o;)

これを適当にクラス化して、
他で流用するのが一般的ですが、
システム作るたびにこのコードを書くと、
だんだんイヤになってきます。





そこで私はPEAR::Logを使って、
この部分省略します。  
用意されているハンドラ(ログの排出先と言った感じ)は以下の通り。
Console コンソール
Display ブラウザ(printと同じ)
Error_Log PHPのerror_log()関数
File ファイルに記入
Mail PHPのmail()関数
SQL(DB) PEAR::DBを使用
Sqlite SQLiteに出力
Syslog Syslogに出力
Window ??



DBはあまり使わないかもしれないが、
File, Syslog, Mailあたりは使えそう。
あと、Sqliteっていうのも発想としては面白いね。
今度実践投入してみよう。



コードはほとんどありません。
重要なのは設定の配列。
ログの排出先によって設定がガラッとわかる。
排出先ごとにオブジェクトを作っていく感じかな。

// ファイルの場合
$conf = array('mode'=>0644);
$logObj = &Log::singleton('file', 'logfile.log', $conf, PEAR_LOG_NOTICE);
// メールの場合
$conf = array('from'=>'dozo@dozo.rgr.jp', 'subject'=>'Log');
$logObj = &Log::singleton('mail', 'webmaster@dozo.rgr.jp', $conf, PEAR_LOG_ALERT);
// syslogの場合
$logObj = &Log::singleton('syslog', LOG_LOCAL0, 'ident');

$logObj->log("Log でてます?");


だいたいこんな感じ。
ホンの数行でログ排出機構が完成。
(^_^)


プログラムが動き出すのが、
Webだったり、mailだったり、cronだったりすると、
書き出すファイルのパーミッションの問題がでる。
ファイルに書き出すときは777の方が良いかもしれない。

コメント
DBでやっちゃうと、
DBが止まったときはどこに出すの?って感じになりません?

SQLiteの実践投入を検討してみよう。
ログの検索なんかも楽にできるかも。
dozo...2004/12/03 12:23 AM

DBに出力できるのはいいっすね。
僕はよくこれを使ってました。
http://jp.php.net/error_log
a-blue...2004/12/02 10:46 AM









トラックバック
http://dozo.rgr.jp/sb.cgi/64
この記事のトラックバックURL
BlogRanking
オススメしたいグッズ
我の創りし物
カテゴリアーカイブ
banners
loglog
banners
Valid XHTML 1.1!
記事一覧
月別アーカイブ
最近のコメント
最近のトラックバック
リンク
リンク
関連用語
Powered by