调低日志级别是最直接有效的减量手段,应优先在config/logging.php中为各channel单独配置level(如'daily'设为'error'),该设置优先于.env中的LOG_LEVEL;生产环境建议禁用LOG_LEVEL并按场景分级:Web请求用warning,队列任务可用notice或info。

日志文件太大,光靠轮转还不够,调低日志级别是最直接有效的“减量”手段。关键不是笼统地改一个环境变量,而是明确控制哪些消息真正落盘。
优先改 config/logging.php 里的 channel level
每个日志通道(比如 daily 或 stack)都可单独设最低记录级别,这个设置比 .env 中的 LOG_LEVEL 更优先。例如,在 config/logging.php 的 'daily' 通道里加上:
-
'level' => 'error':只记录 error 及更严重(critical/alert/emergency)的日志 -
'level' => 'warning':包含 warning、error、critical 等,但跳过 info 和 debug - 值必须是字符串,不能写
LogLevel::ERROR或数字
慎用 LOG_LEVEL 环境变量
LOG_LEVEL=error 在 .env 里只起兜底作用——仅当某个 channel 没显式配置 level 时才生效。一旦你在 config/logging.php 里写了 'level' => 'debug',.env 里的 LOG_LEVEL 就完全被忽略。生产环境建议删掉或注释掉这一行,避免误判。
区分开发与生产环境的级别策略
开发阶段保留 debug 级别便于排查;上线后务必收紧:
- Web 请求类应用:日常用
warning,出问题时临时切到error - 队列或命令行任务:可设为
notice或info,兼顾流程追踪和体积控制 - 如果用了
stack通道组合多个驱动(如 daily + slack),记得每个子通道都要单独配 level,slack 默认只发 error 及以上,但 daily 不设 level 就仍会记满 debug
验证是否生效的小技巧
别只盯着 laravel.log 看——确认你测试的是目标 channel:
- 执行
Log::channel('daily')->debug('test'),再查storage/logs/laravel-2026-09-26.log - 执行
Log::warning('warn test'),看它是否出现在文件中,就能反推当前生效的 level - 如果一条 warning 没写入,说明 channel 的 level 设成了
error或更高


















