ThinkPHP 是一个 PHP 语言的 WEB 应用开发框架。

ThinkPHP 日志格式

在ThinkPHP中打印日志按照以下格式:

<?php
Think\Log::record('D 方法实例化没找到模型类' );
?>

日志示例

[ 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 方法实例化没找到模型类

配置Logtail收集ThinkPHP日志

配置Logtail收集Python日志的详细操作步骤请参考Python日志,根据您的网络部署和实际情况选择对应配置。

在生成正则式的部分,由于自动生成的正则式只参考了日志样例,无法覆盖所有的日志情况,所以需要用户在自动生成之后做一些微调。

由于ThinkPHP是多行日志,而且模式并非固定,可以从日志中提取的字段包括时间、访问IP、访问的URL、以及打印的 Message。其中Message字段包含了多行信息,由于其模式不固定,只能打包到一个字段之中。

ThinkPHP日志的Logtail收集配置参数

行首正则式

\[\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