Pear – Log

1月 1, 2003 · Posted in PEAR::Log · Comment 

Advertisement


概要(Pear::Logとは)

プログラム中からのログメッセージ出力をサポートするPearのパッケージです。
ログ出力レベルの制御や、いろいろなリソースに対するログメッセージの出力機能などをサポートしています。

パッケージpear/Logの入手

pearを利用してインストールします。

pear install pear/Log

下記のURLより、直接パッケージをダウンロードすることもできます。
http://pear.php.net/package/Log/download

QuickStart(メッセージのファイル出力)

1.Loggerインスタンス生成

ログ出力クラスのインスタンスを生成します。

$log = Log::singleton("file", "c:\\logfile.log", null, null, PEAR_LOG_DEBUG);

2.ログ出力

ログメッセージを出力します。

$log->debug("this is debug message.");

2種類のインスタンス生成方法

ログ出力クラスのインスタンスを生成する方法は、2通りあります。

Log::singletonメソッド

$log = Log::singleton("file", "c:\\logfile.log", null, null, PEAR_LOG_DEBUG);

Log::factoryメソッド

$log = Log::factory("file", "c:\\logfile.log", null, null, PEAR_LOG_DEBUG);

factoryでは毎回インスタンス生成が行われるのに対し、singletonの場合はインスタンスが生成済みの場合、そのインスタンスへの参照を返します。
参考:singletonパターン
Log::singleton,Log::factory共に、同一のパラメータを受け取ります。

インスタンス生成時のパラメータ

インスタンス生成時のパラメータ定義は以下のとおりです。

Log::factory($handler, $name = '', $ident = '',
             $conf = array(), $level = PEAR_LOG_DEBUG);

各パラメータの説明

$handler(String)
ファイルやデータベースなどの、ログを出力する方法を指定します。

パラメータ ハンドラ名 説明
console The Console Handler ログメッセージをコンソールに出力します。
display The Display Handler ログメッセージをブラウザに出力します。
error_log The Error_Log Handler PHPのerror_log関数を利用してログメッセージを出力します。
file The File Handler ログメッセージをファイルに出力します。
mail The Mail Handler ログメッセージをメールで送信します。
null The Null Handler 何もしません
sql The SQL (DB) Handler ログメッセージをデータベースのテーブルに出力します。テーブルのレイアウトは後述※1
sqllite The Sqlite Handler ログメッセージをSQLLiteのテーブルに出力します。テーブルのレイアウトは後述※2
syslog The Syslog Handler ログメッセージをシステムのロギングサービスに送ります。
window The Window Handler ログメッセージをブラウザの別ウィンドウに送ります。

※1 ログ出力用のデータベーステーブル形式

CREATE TABLE log_table (
    id          INT NOT NULL,
    logtime     TIMESTAMP NOT NULL,
    ident       CHAR(16) NOT NULL,
    priority    INT NOT NULL,
    message     VARCHAR(200),
    PRIMARY KEY (id)
);

※1 SQLLiteログ出力用のテーブル形式

CREATE TABLE log_table (
    id          INTEGER PRIMARY KEY NOT NULL,
    logtime     NOT NULL,
    ident       CHAR(16) NOT NULL,
    priority    INT NOT NULL,
    message
);

$name(String):
ログ出力のリソース名を指定します。指定する値はハンドラのタイプによって異なります。
例:file:ファイル名、sql:テーブル名

$ident(String):
ログ出力用のインスタンスを一意に識別するためのIDを指定します。
IDはログメッセージと共に出力され、たくさんのログメッセージから目的のメッセージを識別する手助けとなります。

$conf(Array):
連想配列を利用して、ハンドラに対する特殊な設定を指定します。
例:file:array("mode" => 0600, "timeFormat" => "%X %x");

$level(Integer):
ログレベルを指定します。指定には、あらかじめ用意されている定数を利用します。

指定するログレベル一覧。

err()

定数 ショートカット 利用目的
PEAR_LOG_EMERG emerg() システムに対して安全ではない場合の警告
PEAR_LOG_ALERT alert() 対応に急を要する警告
PEAR_LOG_CRIT crit() 危機的な状況を知らせる警告
PEAR_LOG_ERR エラーの発生
PEAR_LOG_WARNING warning() 重要な警告
PEAR_LOG_NOTICE notice() 重要ではない警告
PEAR_LOG_INFO info() お知らせ
PEAR_LOG_DEBUG debug() デバッグ

2種類のログ出力方法

2種類のログ出力方法があります。

レベル別のメソッドを利用

出力するレベルごとにメソッドを使い分けます。

$log->debug("message1");
$log->error("message2");

メソッド一覧は前述の表を参照してください。

共通メソッドを利用

Log::logメソッドを利用して、どのログレベルの場合でも、同じメソッドで出力することができます。

$log->log("message1", PEAR_LOG_DEBUG);
$log->log("message2", PEAR_LOG_ERR);

指定する定数は前述の表を参照してください。

リンク