【发布时间】:2016-01-23 23:54:01
【问题描述】:
我想在我的 Spring Integration 实现中引入有效的日志记录。我已经有记录有效载荷和标头的全局窃听器。然而,我们有很多服务激活器,它们有很多业务逻辑。我想在每个日志中记录重要信息,例如用户 ID、请求 ID。我们正在使用 SLF4J。 Spring 集成流程具有多个由 Spring 集成管理的线程池执行器。
我是否应该使用 AOP,在每次方法调用之前,我从消息头中检索用户 ID 和请求 ID 并将其设置在 SLF4J MDC 中?然后在方法执行结束后清除它。它将在 finally 块中具有清除逻辑。这是一种正确的方法还是会造成性能瓶颈?不知道为什么没有像在多线程 SI 流中那样讨论这个问题,如果没有用户信息,调试日志会变得非常困难。
如果有更好的方法,请提出建议。
【问题讨论】: