ロガー機能について説明します。
なにかと使えるんだか使えないんだか不明っぽい存在だったロガーですが、3.0ではちゃんと実装してありますので、使ってください・・・。
ロガークラスは、プログラムコード中に埋め込み、処理が走った際に軌跡を残すための機能です。
ロガークラスは、現状下記の2つが実装されています。
- LoggerFile
- LoggerMail
logger.xml設定
ロガーについては、WRIRoot/_configs下にあるlogger.xmlで全てを設定します。このXMLはxfcc.phpにてキャッシュ化することで初めて有効になることに注意してください。
<?xml version=”1.0″ encoding=”utf-8″?>
<logger><!– ログレベル設定
以下のログレベルが設定可能です。
TRACE
DEBUG
INFO
WARNING
ERROR
FATAL
–>
<loglevel>TRACE</loglevel><!– 出力チャンネル設定 –>
<!– 出力したいチャンネルタグを作成し値をtrueに設定してください。 –>
<channel>
<default>true</default>
</channel><loggers>
<!– チャンネル単位でスタックを作成します –>
<default><!– ファイル出力 –>
<logger>
<name>LoggerFile</name>
<path>%XF_FRAMEWORK_PATH%/logger/LoggerFile.class.php</path>
<params><!– 出力先パス –>
<path>%XF_APPLICATION_PATH%/_logs</path><!– ファイル名 –>
<filename>log</filename><!– クォータ設定 –>
<quota><!– 日付別 –>
<date>true</date><!– ファイルサイズ(byte) –>
<size>1024</size><!– ファイル世代制限 –>
<limit>10</limit></quota>
</params>
</logger><!– ファイル出力 –>
<logger>
<name>LoggerMail</name>
<path>%XF_FRAMEWORK_PATH%/logger/LoggerMail.class.php</path>
<params><!– 題名 –>
<subject>xFrameworkPX LoggerMailからのお知らせ</subject><!– TO –>
<to>
<addr>kotsutsumi@xenophy.com</addr>
<addr>mbox9999@xenophy.net</addr>
<addr>mbox9998@xenophy.net</addr>
<addr>mbox9997@xenophy.net</addr>
<addr>mbox9996@xenophy.net</addr>
</to><!– FROM –>
<from>info@xenophy.com</from></params>
</logger></default>
</loggers>
</logger>
チャンネル機能
ロガーはチャンネルに属します。未指定の場合、defaultチャンネルが利用されます。
チャンネル別にロガースタックを構築することが可能です。
また、<channel>タグに該当のチャンネルをON/OFFにするための設定が行えます。
LoggerFile
ファイルに対してログを出力します。このLoggerFileは、日付クォータと、サイズクォータ、リミットローテートを3つの機能を備えています。
日付クォータ
ログファイルを日付ごとに分けて出力します。2008/06/01日に出力すると、ログファイル名に20080601のように日付が付加されます。
サイズクォータ
1ログファイルのサイズ上限をバイト単位で設定できます。1024バイトよりも出力されているファイルが超えている場合、ローテートして次のファイルにログを出力する。などが設定できます。
リミットローテート
ローテートする数を指定できます。10を設定するとログファイルは10個以上作成されずに、古いログが消され新しいログが次々追加されていきます。
LoggerMail
ログ出力をメールに設定することが可能です。
TOに関しては、複数指定することが可能です、FROMは1つです。
例外処理など、システムとして想定しない動きをした場合に、管理者にメール送信するなどの目的で利用できると思います。
コードの記述
では、実際にアクション内でログを出力するコードを示します。
$this->L->trace( ‘TRACEログテスト’ );
$this->L->debug( ‘DEBUGログテスト’ );
$this->L->info( ‘INFOログテスト’ );
$this->L->warning( ‘WARNINGログテスト’ );
$this->L->error( ‘ERRORログテスト’ );
$this->L->fatal( ‘FATALログテスト’ );
ログは、trace~fatalまでの6つのログを出力することができます。ログ出力レベルはlogger.xmlで設定でき、必要に応じて必要なログを出力することが可能です。
たとえば、ログレベルをDEBUGに設定すると、debug,info,warning,erro,fatalのログが出力されますが、traceは出力されません。
開発が完了したら、ログレベルはFATALに設定するのがよいと思います。