Laravel添加stdout日志流的配置校验及终端监控方法
配置正确性校验
你新增的stdout通道本身配置没有语法错误,但要实现stdout流日志和原文件日志同时生效,还需要调整默认的日志栈配置:
- 找到
config/logging.php中的stack通道配置,将stdout加入到channels数组中,示例如下:
'stack' => [ 'driver' => 'stack', 'channels' => ['single', 'stdout'], // 此处加入你新增的stdout通道 'ignore_exceptions' => false, ],
- 可选优化:你可以给stdout通道补充日志等级、格式化器配置,避免继承默认配置不符合预期:
'stdout' => [ 'driver' => 'monolog', 'handler' => StreamHandler::class, 'level' => 'debug', // 按需调整最低输出日志等级 'formatter' => \Monolog\Formatter\LineFormatter::class, // 可自定义格式化类 'with' => [ 'stream' => 'php://stdout', ], ],
- 配置修改完成后执行
php artisan config:clear清除配置缓存使配置生效。
终端校验日志输出的方法
CLI场景校验
直接通过Laravel Tinker触发日志测试即可:
- 执行命令启动Tinker:
php artisan tinker - 执行日志写入代码触发输出:
\Log::info('stdout测试日志');
执行完成后当前终端会直接输出stdout流的日志内容,同时你可以检查storage/logs/laravel.log文件,确认同一条日志也被写入到文件中。
如果需要单独校验stdout或stderr流,可以通过流重定向过滤输出:
- 仅查看stdout输出:执行
php artisan tinker 2>/dev/null,此时终端只会展示stdout流的内容 - 仅查看stderr输出:执行
php artisan tinker 1>/dev/null,此时执行\Log::error('stderr测试日志');,终端只会展示stderr流的内容
Web请求场景校验
- 如果你使用本地开发服务
php artisan serve启动项目,启动服务后访问触发日志的路由,运行serve命令的终端会直接打印stdout输出的日志。 - 如果你使用容器部署项目,执行
docker logs -f <容器名称/容器ID>即可实时查看容器捕获的stdout/stderr日志。
内容的提问来源于stack exchange,提问作者mr.incredible
相关产品推荐
相关产品推荐

