みなさん、ログの出力はどのように行っていますでしょうか? 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を使用すれば、簡単にログの出力が行えます。 エラーログ管理等に是非、使用してみてはいかがでしょう。