ログを取る[Pear::Log]

PearLog(1.9.3)とロギングユーティリティパッケージがあります。

ログを取ることで、デバッグがしやすくなったり、運用状況の把握が出来たりします。

ログを取るには、Logクラスのfactory関数又は、singleton関数を使用してインスタンス を作成します。singletonでは、引数の内容毎にそれぞれインスタンスが作成されます。 (例えば、fileに出力するインスタンスとMailに出力するインスタンス)

singleton関数では、引数をシリアライズし配列のキーとしています。factory関数は

$handler = strtolower($handler);
$class = 'Log_' . $handler;
$classfile = 'Log/' . $handler . '.php';

上記のようになっており、指定されたハンドラに応じて対応したクラスをインスタンス化 しています。

ログの出力先(ハンドラ)は、次のものがあります。

  • console
  • display
  • error_log
  • file
  • mail
  • null
  • sql
  • sqlite
  • syslog
  • win

どのハンドラを使用するかによってインスタンス化する際の引数が変わります。

fileハンドラの場合

ファイルを使用する場合、第一引数に'file'、第二引数に保存先ファイル名、第三引数に 識別(ラベル)、第四引数にハンドラのオプション、最後にどのレベルまでを対象とするか を指定します。デフォルトは、PEAR_LOG_DEBUGになっています。

require_once "Log.php";

$conf = array('mode'=>0644,'timeFormat'=>'%Y/%m/%d %H:%M:%S');
$objLog = &Log::singleton('file', 'logfile.log', 'ident', $conf, PEAR_LOG_NOTICE);
$objLog->log("ログ出力です。");

指定できるオプションは、次のようになります。

パラメータデフォルト
appendBooleantrue
lockingBooleanfalse
modeInteger0644
dirmodeInteger0755
lineFormatString'%1$s %2$s [%3$s] %4$s'
timeFormatString'%b %d %H:%M:%S'
eolString\n

ログの出力

ログを出力するには、log関数を使用するか各レベル用に用意された関数を使用します。

log関数は、メッセージとログのレベルを引数に指定します。各レベル用の関数は、 メッセージのみを渡します。レベルは、次のように定義されています。

1.PEAR_LOG_EMERG
2.PEAR_LOG_ALERT
3.PEAR_LOG_CRIT
4.PEAR_LOG_ERR
5.PEAR_LOG_WARNING
6.PEAR_LOG_NOTICE
7.PEAR_LOG_INFO
8.PEAR_LOG_DEBUG

実際の使い方は、次のようになります。

require_once "Log.php";

$conf = array('mode'=>0644,'timeFormat'=>'%Y/%m/%d %H:%M:%S');
$objLog = &Log::singleton('file', 'logfile.log', 'ident');

$objLog->log("ログ出力です。",PEAR_LOG_DEBUG);

$objLog->emerg("emergなメッセージ");
$objLog->alert("alertなメッセージ");
$objLog->crit("critなメッセージ");
$objLog->err("errなメッセージ");
$objLog->warning("warningなメッセージ");
$objLog->notice("noticeなメッセージ");
$objLog->info("infoなメッセージ");
$objLog->debug("debugなメッセージ");