みなさん、ログの出力はどのように行っていますでしょうか? fwrite関数で書き出したり、error_log関数、syslog関数等を使用されている方 もいると思いますが、 PEAR::Logを使用すると、出力方法にファイルやメール、DB等、数種類選択でき、 ログの管理が非常に簡単に行えるようになります。
PEAR::Log (http://pear.php.net/package/Log)
マニュアル(英語)
http://www.indelible.org/pear/Log/guide.php
日本語マニュアル
http://www.townmedia.org/tips/index.php?doc=PEAR/peardoc_ja&_pear=package.logging.html
PEAR::Logでサポートする出力方法は次のとおりです。
- file → ローカルファイルシステム上の任意のファイルにデータを格納します。
- mcal → カレンダアプリケーション。このデータタイプを利用するには、 libmcal と mcal PHP 拡張モジュールが必要です。
- sql → PEAR::DB を使ってデータベースに格納します。
- syslog → Unix 系システムではsyslog を、 Windows NT/2000/XP 系システ ムでは イベントログ を使ってデータを格納します。
- mail → メールボックスにログメッセージを送信します。
- console → テキストコンソールにログメッセージを書きます。
以下のようなコードでログを出力することができます。
--ファイルに出力する場合--
<?php
require_once 'Log.php';
$file = &Log::factory('file', 'out.log', 'TEST');
$file->log('ログ内容');
?>
--出力内容--
Sep 27 12:10:48 TEST [info] ログ内容
指定した場所にout.logファイルが作成され、以降はログが追記されていきます。 引数にオプションで、ファイルのパーミッションや日付のフォーマット等を指定 することができます。
--日付フォーマット変更・パーミッション777を指定する場合--
<?php
require_once 'Log.php';
$conf = array('mode' => 0777, 'timeFormat' => '%X %x');
$file = &Log::factory('file', 'out.log', 'TEST', $conf);
$file->log('ログ内容');
?>
--出力内容--
12:15:11 09/27/06 TEST [info] ログ内容
--メールに出力する場合--
<?php
require_once "Log.php";
$conf = array('from'=>'example@co.jp', 'subject'=>'Log Subject');
$to = 'webmaster@example.com';
$logger = &Log::singleton('mail', $to, 'ident', $conf);
$message = "ログ内容";
$logger->log($message);
?>
--受信メール--
件名: Log Subject
差出人: example@co.jp
宛先: webmaster@example.com
本文 : Sep 27 12:25:20 ident [info] ログ内容
以上のコードだけで、指定したアドレスにログ用のメールを送信できます。
※詳細な使用方法・設定等はマニュアルを参考して下さい。
このように、PEAR::Logを使用すれば、簡単にログの出力が行えます。 エラーログ管理等に是非、使用してみてはいかがでしょう。