ThinkPHP 6.0 生产环境默认不写日志,需同时满足三条件:启用 File 日志驱动、配置非空 level(如['error','notice','sql'])、开启 exception.log=true;APP_DEBUG=false仅关闭调试展示,不影响日志功能。

会记录,但默认不写入文件,必须手动配置日志级别和驱动。
ThinkPHP 6.0 在 APP_DEBUG = false(即生产环境)时,框架主动跳过日志写入逻辑——哪怕 runtime/log/ 目录存在,里面也始终为空。这不是权限或路径问题,而是设计如此。
要让日志在关闭调试模式后正常落盘,需满足三个关键条件:
显式开启日志驱动类型
确保config/log.php中'type' => 'File'已启用(不能是注释或'type' => '')-
明确设置日志记录级别
log.level必须是非空数组,例如:'level' => ['error', 'notice', 'sql']
若留空或未定义,日志系统直接跳过所有写入
确保异常捕获开关打开
在config/exception.php中设'log' => true,否则未捕获的异常不会进日志(注意:这和Log::error()是两条独立路径)
额外注意两点:
-
.env中设APP_DEBUG=false后,Log::debug()和Log::info()默认不生效,因为它们低于level阈值;只记录你允许的级别 -
APP_DEBUG关闭不影响日志功能本身,它只控制错误页面展示、Trace 面板、模板重编译等调试行为
如果仍无日志,常见漏点是:
- 忘记删
runtime/目录,旧缓存导致配置未生效 -
log.file被设为空字符串或非法路径 - 在中间件或命令行中误调用了
Log::driver('socket'),切换了日志通道却没配好服务
不复杂但容易忽略。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











