要禁止 ThinkPHP6.0 记录 404 访问日志,需在 config/log.php 中设置 'ignore_404' => true,并确保自定义异常处理器调用 parent::report($exception),否则 ignore_404 判断将被跳过。

要禁止 ThinkPHP6.0 记录 404 访问日志,关键不是关“错误级别”,而是控制 404 是否被当作需记录的异常——因为 HTTP 404 在 TP6 中属于 think\exception\HttpException,走的是异常日志链路,而非 PHP 错误日志。
关闭 404 异常的日志写入
ThinkPHP6 默认会将未捕获的异常(包括 404)写入日志,前提是异常处理器开启了日志功能。控制开关在两个地方:
-
config/exception.php 中的
'log' => true:这是总开关,设为false就完全禁用所有未捕获异常的日志记录(含 404、500 等) -
config/log.php 中的
'ignore_404' => true:更精准的控制项,仅跳过 404 类异常,其他异常(如 500、自定义异常)仍可记录
推荐使用后者,保留其他异常日志能力。确认该配置存在且为 true(默认是 false,需手动修改):
'ignore_404' => true,确保异常处理器不绕过 ignore_404
如果你用了自定义异常处理器(例如继承 think\ExceptionHandler),必须显式调用父类逻辑,否则 ignore_404 判断会被跳过:
- 在自定义处理器的
report()方法中,不能只写自己的逻辑,要加上:parent::report($exception); - 否则框架不会执行
ignore_404检查,404 仍会落进日志
验证是否生效
改完配置后,清空 runtime/log/ 目录,并访问一个不存在的路由(如 /nonexistent),然后检查日志文件是否新增了类似 [error] HttpException: 404 Not Found 的条目:
- 没出现 → 配置已生效
- 仍出现 → 检查是否漏改
ignore_404,或自定义处理器未调用parent::report() - 注意:APP_DEBUG=true 时部分日志行为可能被调试模式覆盖,建议在
APP_DEBUG=false下验证生产行为
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











