如何实现Laravel中间件来有效记录请求日志?

2026-05-03 00:202阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计918个文字,预计阅读时间需要4分钟。

如何实现Laravel中间件来有效记录请求日志?

由于日志配置错误导致日志输出异常,常见情况是在中间件中使用了`Log::info()`,但`config/logging.php`中对相应`channel`的`driver`配置有误。例如,错误配置可能如下:

  • 检查 config/logging.php 中你用的 channel 是否存在、driver 和必要参数(如 pathlevel)是否齐全
  • 避免在中间件里硬编码 channel 名,优先复用默认 stack:直接用 Log::info(),它走的是 config('logging.default')
  • 调试时临时加一行 Log::stack(['single'])->info('test'); 看是否能落盘,确认是配置问题还是中间件执行时机问题

app/Http/Middleware/LogRequest.php 怎么拿到完整请求体?

Laravel 默认把 $request->getContent() 读过一次后清空,中间件里再调用就是空字符串——这是最常踩的坑。不是你代码写错了,是 PSR-7 的 immutable request 特性在起作用。

阅读全文

本文共计918个文字,预计阅读时间需要4分钟。

如何实现Laravel中间件来有效记录请求日志?

由于日志配置错误导致日志输出异常,常见情况是在中间件中使用了`Log::info()`,但`config/logging.php`中对相应`channel`的`driver`配置有误。例如,错误配置可能如下:

  • 检查 config/logging.php 中你用的 channel 是否存在、driver 和必要参数(如 pathlevel)是否齐全
  • 避免在中间件里硬编码 channel 名,优先复用默认 stack:直接用 Log::info(),它走的是 config('logging.default')
  • 调试时临时加一行 Log::stack(['single'])->info('test'); 看是否能落盘,确认是配置问题还是中间件执行时机问题

app/Http/Middleware/LogRequest.php 怎么拿到完整请求体?

Laravel 默认把 $request->getContent() 读过一次后清空,中间件里再调用就是空字符串——这是最常踩的坑。不是你代码写错了,是 PSR-7 的 immutable request 特性在起作用。

阅读全文