ThinkPhP は PHP 言語に基づいた、Web アプリケーションの開発フレームワークです。

ログフォーマット

ThinkPhP では、以下のロギング方法が使用されています。

<? php
Think\Log::record('D method instantiation does not find the model class' );
			

ログサンプル

[ 2016-05-11T21:03:05+08:00 ] 10.10.10.1 /index.php
INFO: [ app_init ] --START--
INFO: Run Behavior\BuildLiteBehavior [ RunTime:0.000014s ]
INFO: [ app_init ] --END-- [ RunTime:0.000091s ]
Info: [app_begin] -- start --
INFO: Run Behavior\ReadHtmlCacheBehavior [ RunTime:0.000038s ]
INFO: [ app_begin ] --END-- [ RunTime:0.000076s ]
INFO: [ view_parse ] --START--
INFO: Run Behavior\ParseTemplateBehavior [ RunTime:0.000068s ]
INFO: [ view_parse ] --END-- [ RunTime:0.000104s ]
INFO: [ view_filter ] --START--
INFO: Run Behavior\WriteHtmlCacheBehavior [ RunTime:0.000032s ]
INFO: [ view_filter ] --END-- [ RunTime:0.000062s ]
INFO: [ app_end ] --START--
INFO: Run Behavior\ShowPageTraceBehavior [ RunTime:0.000032s ]
INFO: [ app_end ] --END-- [ RunTime:0.000070s ]
ERR: D method instantiation does not find the model class

Logtail を使用して ThinkPhP ログを収集

Logtail を使用して ThinkPhP ログを収集する手順については、「Python ログ」をご参照ください。ネットワーク構成およびネットワーク設定に合わせて構成を選択します。

自動生成される正規表現は、ログサンプルのみを基にしており、すべてのログフォーマットに対応しているわけではありません。したがって、正規表現が自動生成されたら、修正を加える必要があります。

ThinkPhP ログは、複数行に渡り、定まった形式がありません。ThinkPhP ログより、時間、ユーザーの IP アドレス、アクセス URL、表示メッセージといったフィールドを抽出できます。メッセージフィールドの情報は複数行に渡り、定型化されていないため、1 つのフィールドとして扱われます。

Logtail より ThinkPhP ログの設定パラメータを取得

行の先頭の正規表現:

\[\s\d+-\d+-\w+:\d+:\d+\+\d+:\d+\s.

正規表現:

\[\s(\d+-\d+-\w+:\d+:\d+)[^:]+:\d+\s]\s+(\S+)\s(\S+)\s+(.

時間書式:

%Y-%m-%dT%H:%M:%S