如何通过ThinkPHP自定义日志记录,调试复杂业务流程中的日志文件?
- 内容介绍
- 文章标签
- 相关推荐
本文共计981个文字,预计阅读时间需要4分钟。
在默认情况下,ThinkPHP的日志可能仅记录错误,或者根本未写入文件——这不是代码错误,而是配置未开启。关键在于 `log.type` 和 `log.level`。
常见错误现象:Log::info('test') 没反应、日志目录空、runtime/log/ 下只有日期文件夹但无内容。
-
log.type必须设为File(大小写敏感),设成test或留空会静默失败 -
log.level默认是['error', 'notice'],info和debug不会写入,要手动加进去 - 确保
runtime/log/目录可写,且父目录runtime/存在(TP 不会自动创建多级目录)
记录业务流程时用 Log::record() 还是 Log::info()?
别用 Log::record() —— 它是内部方法,只在框架核心流程中被调用,外部调用无效,且文档已标记为“不推荐”。真正该用的是 Log::info()、Log::debug() 等标准接口。
使用场景:下单流程分步骤调试、支付回调链路追踪、多服务协同状态记录。
本文共计981个文字,预计阅读时间需要4分钟。
在默认情况下,ThinkPHP的日志可能仅记录错误,或者根本未写入文件——这不是代码错误,而是配置未开启。关键在于 `log.type` 和 `log.level`。
常见错误现象:Log::info('test') 没反应、日志目录空、runtime/log/ 下只有日期文件夹但无内容。
-
log.type必须设为File(大小写敏感),设成test或留空会静默失败 -
log.level默认是['error', 'notice'],info和debug不会写入,要手动加进去 - 确保
runtime/log/目录可写,且父目录runtime/存在(TP 不会自动创建多级目录)
记录业务流程时用 Log::record() 还是 Log::info()?
别用 Log::record() —— 它是内部方法,只在框架核心流程中被调用,外部调用无效,且文档已标记为“不推荐”。真正该用的是 Log::info()、Log::debug() 等标准接口。
使用场景:下单流程分步骤调试、支付回调链路追踪、多服务协同状态记录。

