必须将Laravel日志驱动从single切换为daily,通过设置LOG_CHANNEL=daily、清空配置缓存、配置daily通道的path/level/days,并验证按天生成日志文件。

将Laravel应用从开发环境迁移到生产环境时,必须把日志驱动从默认的single切换为daily,否则laravel.log会持续膨胀、无法归档、排查问题时难以定位特定日期的错误记录。
确认当前日志配置状态
执行命令查看当前生效的日志通道:php artisan tinker → 输入config('logging.default'),回车。若返回"single",说明尚未切换;若返回"daily"或自定义通道名,则跳过后续步骤。
检查config/logging.php中'stack'通道的'channels'数组,默认值是['single'],这正是你要改的地方。
修改默认日志通道为daily
打开.env文件,添加或修改这一行:
LOG_CHANNEL=daily
这会覆盖config/logging.php中'default' => env('LOG_CHANNEL', 'stack')的默认值,让整个应用默认走daily通道。注意:不要写成LOG_DRIVER或LOG_CHANNEL_NAME,Laravel只认LOG_CHANNEL这个键名。
保存后立即执行:php artisan config:clear。【不执行这一步,.env变更完全不会生效,日志仍写入laravel.log】
配置daily通道路径与保留天数
打开config/logging.php,找到'daily' => [这一段(通常在channels数组靠前位置)。
确保其中包含以下三项配置:
'path' => storage_path('logs/laravel.log'),
'level' => 'error',
'days' => 30,
这里storage_path('logs/laravel.log')是关键——daily驱动会自动把laravel.log替换成laravel-2026-08-27.log这样的格式,你不用手动拼日期。如果误写成storage_path('logs/daily/laravel.log'),它会生成daily/laravel-2026-08-27.log,虽能用但路径层级变深,不便于运维脚本统一清理。
将'level'设为'error'可大幅降低I/O压力,生产环境无需记录debug/info级日志。【若业务要求追踪关键流程,可改为'warning',但严禁设为'debug'】
验证日志是否按天分割并写入新路径
第一步:清空现有日志目录,避免旧文件干扰判断:rm -f storage/logs/*.log
第二步:触发一次错误,例如访问一个不存在的路由,让Laravel写入一条error日志。
第三步:立刻执行:ls -la storage/logs/。你应该看到类似laravel-2026-08-27.log的文件,且文件大小大于0。如果只看到laravel.log,说明LOG_CHANNEL=daily未生效或config:clear没运行。
第四步:等待到第二天凌晨,再次执行ls -la storage/logs/,确认生成了laravel-2026-08-28.log,同时laravel-2026-08-27.log不再被追加内容——这证明daily驱动已正确启用。



















