Lumen 5.3调试日志异常:设置APP_DEBUG=false后仍记录Debug日志
解决Lumen 5.3中Debug级别日志无法关闭的问题
嘿,我来帮你理清楚这个问题~首先得明确一个关键点:APP_DEBUG=true/false主要控制的是是否在浏览器显示详细的错误堆栈页面,它和日志记录的级别没有直接关联。所以你改了APP_DEBUG为false后,Log::debug依然会写入日志是正常的,要关闭Debug级别的日志,需要调整Monolog的日志级别配置。
下面给你两种可行的方法:
方法一:在bootstrap/app.php中直接配置Monolog
Lumen 5.3允许通过configureMonologUsing方法自定义Monolog的配置,你可以在这个方法里指定日志的最低记录级别。
打开bootstrap/app.php,在$app = new Laravel\Lumen\Application(...);之后添加以下代码:
$app->configureMonologUsing(function ($monolog) { // 这里把日志级别设为INFO,只有INFO及以上级别的日志会被记录 $handler = new \Monolog\Handler\StreamHandler(storage_path('logs/lumen.log'), \Monolog\Logger::INFO); $monolog->pushHandler($handler); });
Monolog的日志级别从低到高依次是:DEBUG、INFO、NOTICE、WARNING、ERROR、CRITICAL、ALERT、EMERGENCY。设置为INFO后,所有DEBUG级别的日志就会被过滤掉,不会写入文件了。
方法二:使用配置文件管理日志级别(更灵活)
如果你希望通过.env文件来控制日志级别,或者需要更复杂的日志配置,可以用这种方法:
- 首先在项目根目录创建
config文件夹(如果没有的话)。 - 在
config文件夹中创建logging.php文件,写入以下配置内容:
return [ 'default' => env('LOG_CHANNEL', 'stack'), 'channels' => [ 'stack' => [ 'driver' => 'stack', 'channels' => ['single'], ], 'single' => [ 'driver' => 'single', 'path' => storage_path('logs/lumen.log'), // 这里通过环境变量LOG_LEVEL来控制日志级别,默认设为info 'level' => env('LOG_LEVEL', 'info'), ], ], ];
- 打开
bootstrap/app.php,找到$app->register(App\Providers\AppServiceProvider::class);这一行,在它前面添加代码加载配置:
$app->configure('logging');
- 最后在你的
.env文件中添加或修改:
LOG_LEVEL=info
这样设置后,只要LOG_LEVEL的值不是debug,Debug级别的日志就不会被记录了。你可以根据需求调整LOG_LEVEL的值,比如设为warning的话,只有警告及以上级别的日志会被保存。
内容的提问来源于stack exchange,提问作者kimbarcelona
相关产品推荐
相关产品推荐

