PHPプロ!TIPS+

PEAR::Logでログ管理

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

バックナンバーについて

TIPS-MLは、毎週金曜日に更新され、新しい記事が掲載されます。

Tipsꗗy[W 

Pick Up Q&A

Q
ログファイルの中の空のデータ行を削除したい
 このエントリーをはてなブックマークに追加 
A
ログのデータ個数(列数)が固定で、空のログが"<><><>"だと既知であれば if ($line === "<><><>") { continue; } で読み飛ばしてもいいのでは? ...

>>続きを読む

まずは配列や文字列の扱いから、じっくり勉強して行きましょう。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)