トップページ > 1. ドキュメント > 1.2. CharcoalPHPの基本 > 1.2.1. 基本知識 > ログを出力する

ログを出力する

Charcoal_Loggerクラス

CharcoalPHPではログ出力をするためのフロントエンド・インタフェースとしてCharcoal_Loggerクラスがあります。Charcoal_Loggerクラスには設定ファイルによって複数のロガークラスを登録することができ、それらを個別に指定してログファイル等に書き出すことができます。実際に書き出しを行うクラスはCharcoal_ILoggerインタフェースを実装するだけでよいため、出力先はファイルに限らず、ブラウザ画面、データベース、メールなど自由です。バンドルされているロガークラスとしてはCharcoal_FileLogger、Charcoal_CsvFileLogger、Charcoal_ScreenLoggerなどがあります。 ログに出力する際、下記のようにCharcoal_Loggerクラスのwritelnメソッドを呼び出します。

エラーレベル

Charcoal_Logger::writeln()メソッドを呼び出す際の第1引数(例では「E:debug, system」)ですが、コロン(:)の前がエラーレベルを表す文字で、以下のうち1つを指定します。ターゲットはカンマ(,)で区切ることで複数指定できます(同時に複数のロガーに同じメッセージを出力できる)。

エラーレベル 優先度 説明
F Fatalレベル。意図せず、なおかつ処理が続行不可能な深刻なエラーを検出した場合の出力スイッチ
E Errorレベル。意図した範囲でのエラー発生を検出した場合の出力スイッチ
W Warningレベル。処理を中断するほどではないが、意図しない引数などが検出された場合に出力するスイッチ
I Infoレベル。システムの監視等に最低限必要な情報を出力するスイッチ
D Debugレベル。デバッグに最低限必要な情報を出力するスイッチ
T Traceレベル。デバッグやシステム監視のために有用な詳細情報を出力するスイッチ

「優先度」が高いものは出力されやすくなります。実行時にどのレベルまで出力対象とするかを設定ファイルで指定できるため、設置するドメインごとに出力するログの種類とレベルを設定できます。
また、Charcoal_Logger::writeln(…)と書く代わりに以下のように短縮された書き方もできます。

タグ

Charcoal_Logger::writeln()メソッドの第2引数は任意のタグを指定することができます。タグはそのままログに出力されるほか、profile.iniでLOG_TAG_FILTERを指定することで対象のタグを絞り込んで出力することができるため、注目したいログが他のログに埋もれてしまうのを避けられます。

ログが出力されない時

Charcoal_Logger::writeln()メソッドを呼んでもメッセージはすぐにファイル等に出力されません。メッセージは一旦メモリ上に蓄積され、フレームワーク終了時にまとめて出力されます。
この時呼ばれるのがCharcoal_Logger::flush()メソッドです。

独自のシャットダウンフックやエラーハンドラを登録している時、Charcoal_Logger::flush()が呼ばれずにログが出力されないケースがあります。その場合は独自のシャットダウンフックやエラーハンドラでCharcoal_Logger::flush()をコールしてください。

Pocket

Comments are closed.