如何通过处理器向日志消息添加额外的数据

编辑本页

警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 5.0,现已不再维护。

本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。

如何通过处理器向日志消息添加额外的数据

独白允许您在记录每条记录之前通过添加一些额外的数据来处理它。这是处理器的角色,可以应用于整个处理程序堆栈,也可以仅应用于特定的处理程序或通道。

处理器是一个可调用对象,接收记录作为它的第一个参数。方法配置处理器monolog.processorDIC标签。看到关于它的参考资料

添加会话/请求令牌

有时很难判断日志中的哪些条目属于哪个会话和/或请求。下面的例子将为每个使用处理器的请求添加一个唯一的令牌:

12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
名称空间应用程序日志记录器使用ob娱乐下载组件HttpFoundation会话SessionInterfaceSessionRequestProcessor私人会话私人sessionId公共函数__construct(SessionInterface会话->会话=会话;}//每个日志记录调用此方法;优化它以不影响性能公共函数__invoke(数组记录如果(!->会话->isStarted ()) {返回记录;}如果(!->sessionId) {->sessionId = substr(->会话->getId (),08) ?:'????????';}记录“额外的”] [“令牌”] =->sessionId。“- - -”.substr函数(''真正的),8);返回记录;}}

接下来,将你的类注册为一个服务,以及一个使用额外信息的格式化程序:

  • YAML
  • XML
  • PHP
1 2 3 4 5 6 7 8 9 10
#配置/ services.yaml服务:monolog.formatter.session_request:类:独白\格式化程序\ LineFormatter参数:-“[% % datetime % %][% %额外的。令牌% % % % % %频道。% % level_name % %: % % % % % %消息上下文额外% % % % % % \ n”App \记录器\ SessionRequestProcessor:标签:-名称:monolog.processor

最后,设置格式化程序用于任何你想要的处理程序:

  • YAML
  • XML
  • PHP
1 2 3 4 5 6 7 8
#配置/包/刺激/ monolog.yaml独白:处理程序:主要:类型:路径:' % kernel.logs_dir % / % kernel.environment % . log '水平:调试格式化程序:monolog.formatter.session_request

如果使用多个处理程序,还可以在处理程序级或通道级注册一个处理器,而不是全局注册它(请参阅以下部分)。

ob娱乐下载Symfony的MonologBridge提供了可以在应用程序中注册的处理器。

DebugProcessor
向记录添加对调试有用的附加信息,如时间戳或错误消息。
TokenProcessor
将当前用户的令牌中的信息添加到记录中,即用户名、角色以及用户是否经过身份验证。
WebProcessor
使用Symfony请求对象中的数据覆盖来自请求的数据。ob娱乐下载
RouteProcessor
添加当前路由信息(控制器、动作、路由参数)。
ConsoleCommandProcessor
添加有关当前控制台命令的信息。

另请参阅

请查看内置独白处理器了解有关如何创建这些处理器的更多信息。

为每个处理器注册处理器

方法可以为每个处理程序注册一个处理器处理程序选项monolog.processor标签:

  • YAML
  • XML
  • PHP
1 2 3 4 5
#配置/ services.yaml服务:App \记录器\ SessionRequestProcessor:标签:-名称:monolog.processor,处理程序:主要

每个通道注册处理器

方法可以为每个通道注册一个处理器通道选项monolog.processor标签:

  • YAML
  • XML
  • PHP
1 2 3 4 5
#配置/ services.yaml服务:App \记录器\ SessionRequestProcessor:标签:-名称:monolog.processor,渠道:主要
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。