【问题标题】:What is the Best way to group log messages in a MVC app在 MVC 应用程序中对日志消息进行分组的最佳方法是什么
【发布时间】:2019-03-20 10:23:46
【问题描述】:

我想以最少的重构将日志系统添加到我们的 Spring MVC 应用程序中。我想根据请求对消息进行分组并附加一些 id 到它。我想到的一种方法是,在控制器中创建一些带有id 的记录器对象并传递给服务、DAO 层。所有层都不断向该记录器对象添加消息。最后,我在请求处理结束时打印它们。 Spring 或 log4j 框架是否提供了更好的方法来实现这一点?

【问题讨论】:

    标签: java spring logging log4j


    【解决方案1】:

    Spring 有一个 Request 范围,因此您可以创建一个在收到请求时生成的请求范围 ID 对象。然后,您可以将此对象注入您需要使用常规依赖注入记录的类中,因此您不必传递任何内容。

    @Bean
    @Scope(value = WebApplicationContext.SCOPE_REQUEST, proxyMode = ScopedProxyMode.TARGET_CLASS)
    public RequestId requestScopedBean() {
        return new RequestId();
    }    
    

    对于 Log,通常的做法是为每个类初始化一个 Log。然后你就会在每个类中都有你想要的所有元素。

    private static final Logger logger = Logger.getLogger(YourClass.java)
    

    希望对你有帮助!

    【讨论】:

      【解决方案2】:

      Spring Security 具有自动将 SessionId 添加到记录器的功能。 Check this One

      在这里发布相同的答案:

      RequestContextHolder.currentRequestAttributes().getSessionId();
      

      这依赖于 Spring 的 RequestContextHolder,所以它应该与 Spring MVC 的 DispatcherServlet 一起使用,或者你应该声明一个 RequestContextListener。如果不存在,也会创建会话。

      【讨论】:

        猜你喜欢
        • 2011-06-06
        • 2010-09-14
        • 2010-12-08
        • 1970-01-01
        • 1970-01-01
        • 2018-10-06
        • 1970-01-01
        • 2017-12-27
        • 2015-12-29
        相关资源
        最近更新 更多