ロギング

Webアプリは、以下の4つのログを出力します。

ログ ファイル名 内容
アプリログ app.log Webアプリのロギング。
開発者はここへログを出力します。出力方法は下記参照。
アクセスログ access.log ブラウザからのアクセスをロギング。
静的ファイルへのアクセスも含む。
TreeFrogログ treefrog.log TreeFrogシステムのロギング。
システムが出力するログなので、エラーが発生した場合は何か情報が残っている場合あり。
クエリログ query.log データベースへ発行されたクエリログ。
設定ファイルのSqlQueryLogFileの値にファイル名を指定する。出力を停止する場合は空にする。
ログ出力にはオーバヘッドがあるので、Webアプリを正式に運用する際には出力を停止するのが良いでしょう。


アプリログの出力

アプリログは、Webアプリのロギングに使用されます。アプリログを出力する場合は次のメソッドを使用します。

  • tFatal()
  • tError()
  • tWarn()
  • tInfo()
  • tDebug()
  • tTrace()

渡せる引数は printf 形式と同じで、フォーマット文字列と可変個の変数です。例えば、こんな感じに使います。

tError("Invalid Parameter : value : %d", value);

すると、次のようなログが log/app.log ファイルに出力されるでしょう。

2011-04-01 21:06:04 ERROR [12345678] Invalid Parameter : value : -1

フォーマット文字列の末尾には改行コードは不要です。

ログのレイアウト変更

出力されるログのレイアウトを変更することが可能です。logger.ini 設定ファイルにある FileLogger.Layout パラメータに設定します。

# Specify the layout of FileLogger.
#  %d : date-time
#  %p : priority (lowercase)
#  %P : priority (uppercase)
#  %t : thread ID (dec)
#  %T : thread ID (hex)
#  %i : PID (dec)
#  %I : PID (hex)
#  %m : log message
#  %n : newline code
FileLogger.Layout="%d %5P [%t] %m%n"

ログレイアウトにある %d の部分にはログの発生日時が挿入されます。日時のフォーマットは FileLogger.DateTimeFormat パラメータに指定します。指定可能な形式は QDateTime::toString() に引数に渡す値と同じですので、詳しくは Qt ドキュメントをご覧ください。

# Specify the date-time format of FileLogger, see also QDateTime
# class reference.
FileLogger.DateTimeFormat="yyyy-MM-dd hh:mm:ss"

ログ出力レベルの変更

ログの出力レベルを logger.ini にある次のパラメータで設定することができます。

# Outputs the logs of equal or higher priority than this.
FileLogger.Threshold=debug

この例では debug レベル以上のログが出力されます。

結論: 開発で必要なデバッグログは tDebug() 関数で出力しておけ。