如何通过处理器向日志消息添加额外的数据
编辑本页警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 5.0,现已不再维护。
读本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。
如何通过处理器向日志消息添加额外的数据
独白允许您在记录每条记录之前通过添加一些额外的数据来处理它。这是处理器的角色,可以应用于整个处理程序堆栈,也可以仅应用于特定的处理程序或通道。
处理器是一个可调用对象,接收记录作为它的第一个参数。方法配置处理器monolog.processor
DIC标签。看到关于它的参考资料.
添加会话/请求令牌
有时很难判断日志中的哪些条目属于哪个会话和/或请求。下面的例子将为每个使用处理器的请求添加一个唯一的令牌:
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\会话\SessionInterface;类SessionRequestProcessor{私人$会话;私人$sessionId;公共函数__construct(SessionInterface$会话){$这->会话=$会话;}//每个日志记录调用此方法;优化它以不影响性能公共函数__invoke(数组$记录){如果(!$这->会话->isStarted ()) {返回$记录;}如果(!$这->sessionId) {$这->sessionId = substr($这->会话->getId (),0,8) ?:'????????';}$记录[“额外的”] [“令牌”] =$这->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许可证。