在 Laravel 中记录自定义日志需配置独立 Log Channel,如在 config/logging.php 中新增 ‘payment’ 频道使用 single 驱动写入 storage/logs/payment.log,并通过 Log::channel(‘payment’)->info() 调用,支持结构化数据自动 jsON 化,可结合环境变量动态控制启用。

在 laravel 中记录自定义日志,核心是通过配置独立的 Log channel(日志频道),让特定业务逻辑(比如支付回调、爬虫抓取、审计操作)写入专属文件或服务,避免和默认日志混杂,也方便后续排查和监控。
定义一个自定义日志频道
在 config/Logging.php 中新增一个 channel 配置,例如叫 payment:
- 使用
single驱动写入单独文件(推荐初试) - 指定
path路径,如storage/logs/payment.log - 可选开启
daily按天轮转,或用stack聚合多个通道
示例配置片段:
'payment' => [ 'driver' => 'single', 'path' => storage_path('logs/payment.log'), 'level' => 'debug', ],
在代码中使用自定义频道写日志
不用改全局日志行为,直接调用 Log::channel('xxx') 获取实例后记录:
Log::channel('payment')->info('支付回调成功', ['order_id' => 123, 'amount' => 99.9]);- 支持
debug/info/warning/Error等全部方法 - 结构化数据会自动 json 化写入,便于解析
进阶:按环境或需求动态切换频道
可在配置里结合环境变量控制行为,比如只在生产环境启用审计日志:
- 在
logging.php中用env('AUDIT_LOG_ENABLED', false)判断是否注册audit频道 - 或在代码中包裹条件:
if (app()->environment('production')) { Log::channel('audit')->... }
验证与调试小技巧
刚配好别急着上线,快速确认是否生效:
- 手动触发一次日志写入,检查对应
.log文件是否生成、内容是否正确 - 注意
storage/logs/目录权限,确保 Web 用户有写入权限 - 如果没输出,检查
APP_LOG_LEVEL是否过高(如设为error就看不到info)
基本上就这些。配好频道后,各模块各写各的日志,清晰又可控。
以上就是Laravel如何记录自定义日志?(Log频道配置)的详细内容,更多请关注php中文网其它相关文章!