ThinkPHP日志系统怎么用_ThinkPHP日志记录查看及错误追踪方法

ThinkPHP日志系统可提升调试效率,需配置log.php或.env文件启用;通过Log::info、Log::error等方法手动记录,支持自动捕获异常;日志按日期存储于runtime/log/,可用tail、grep查看,结合级别、时间、IP追踪问题。

ThinkPHP 自带的日志系统非常实用,能帮助开发者快速定位错误、追踪程序执行流程。使用得当,可以大幅提升调试效率。下面介绍 ThinkPHP 日志系统的使用方法、日志记录方式以及如何查看和追踪错误。

开启与配置日志功能

在 ThinkPHP 项目中,默认情况下日志功能是开启的,但建议检查并根据需要调整配置。

打开 config/log.php 文件(或在 config/app.php 中配置 log 相关项),确保以下设置:

  • 'default' => 'file', // 使用文件驱动记录日志
  • 'level' => ['error', 'warning', 'info', 'sql'], // 记录哪些级别的日志
  • 'type' => 'File', // 日志写入类型
  • 'path' => '', // 日志存储路径,默认为 runtime/log/

也可以通过 .env 文件设置环境相关日志级别,例如:

LOG_LEVEL=error,warning,info

手动记录日志信息

在控制器或模型中,可以通过 \think\facade\Log 类写入日志。

  • Log::info('用户登录成功', ['uid' => 123]);
  • Log::error('数据库连接失败', ['error' => $e->getMessage()]);
  • Log::warning('缓存未命中,使用默认值');
  • Log::sql('SQL语句执行', ['sql' => $sql]);

这些日志会按照日期生成文件,保存在 runtime/log/年/月/day.log 中。

自动记录错误与异常

ThinkPHP 在发生错误或抛出异常时会自动记录日志,无需手动调用。

例如:

try { db('user')->find(999); } catch (\Exception $e) { // 错误会被自动记录,也可手动补充 Log::error('查询用户出错:' . $e->getMessage()); throw $e; }

同时,框架的调试模式开启后(app_debug = true),会在页面底部显示 SQL 和错误摘要,便于开发阶段排查。

查看日志文件与错误追踪

日志文件位于 runtime/log/ 目录下,按年月日分目录存储。每个文件包含当天该级别的日志条目。

查看方法:

  • 直接打开对应日期的 log 文件,搜索关键词如 [error]、[sql] 或自定义标记
  • 使用 tail 命令实时监控:tail -f runtime/log/202504/05.log
  • 结合 grep 过滤:grep "\[error\]" runtime/log/202504/*.log

每条日志格式类似:

[2025-04-05T10:23:01+08:00] [error] [ip:127.0.0.1] 数据库连接失败 [uid:123]

可根据时间、级别、IP、内容进行追踪,快速定位问题源头。

基本上就这些。合理使用 ThinkPHP 的日志功能,能让开发和运维更轻松。关键是配置好级别、定期查看,并在关键逻辑中加入有意义的日志信息。