Open Source Web Development Tutorials - Dev Shed
PHPでログ機能を作ろう
(2009/02/13公開)
コードの解説
ここではPEAR::Logパッケージ(http://pear.php.net/package/Log/)を使って、寄せ集めではあるが独自のMyLogというクラスを使ってみた。
このMyLogを使ったのは、自分自身のログ記録の必要事項に沿って、後ほどカスタマイズができるようにするためだ。実際、いくつか変更を加えている。
グローバル変数を用いていくつかのパラメータを設定している。このグローバル変数はアプリケーションのグローバル変数であることもある。それらの変数とは:
$myGlobal['log']['logfile']:ログファイルの位置を指定する(例:"f:trace.log")
$myGlobal['log']['level']:ログ記録がなされるべきログのレベルを指定する。レベルとは;
0 システム使用不可
1 緊急に対策が必要
2 危機状態
3 エラー発生
4 警告発生
5 正常だが注意事項あり
6 情報のみ
7 デバッグ関連情報
これらのレベルはPEAR::Logライブラリからのものである。
$myGlobal['log']['size']:ログの総サイズを指定する。例えば、32と指定した場合、ログファイルの総サイズが32メガバイトとなる。今回のクラスでは、2つの16メガバイトのファイルを作り、2つ目のファイルがいっぱいになる寸前に、最初のものが削除されるようになっている。こうすることにより、ログの継続性が保たれる。
$ myGlobal ['log']['email_address'] = 'info@example.com':重要なログメッセージがこのメールアドレスに送信される。
$ myGlobal ['log']['email_level'] = 1:このレベル以上のメッセージが、上の「email_address」で指定したアドレスに送信される。
アプリケーションの中では、使用する前にMyLogのインスタンスを呼び出す必要がある。
// logging object
$objMyLog = new MyLog() ;
このオブジェクトにより、アプリケーション内のどこでも情報をログ記録することができる。このインスタンスのスコープは大域スコープであることに注意。
// logging in a script
$GLOBALS['objMyLog']->writelog("Could not create instance with dsn $dsn", 2, __FILE__, __LINE__) ;
この命令文において、最初の引数はログメッセージで、2番目の引数は優先度(ここでは2)、3番目と4番目の引数はそれぞれファイル名と行番号となっている。
Copyright © 2008 Ziff Davis Enterprise, Inc.
Originally appearing in the U.S. Edition of Dev Shed. All Rights Reserved.








