PEAR::LOG

Observerパターン?

概要

PHP::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の方が良いかもしれない。



トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Third Project
証券会社ランキング比較