【问题标题】:Logging and Spring Rest MVC app日志记录和 Spring Rest MVC 应用程序
【发布时间】:2017-10-28 05:28:32
【问题描述】:

我有一个 spring rest 应用程序,前面有 spring rest 控制器,中间有 spring 服务,服务后面有 spring jpa 存储库。其余控制器只是将请求委托给服务层。现在,问题是,我可以在服务层或控制器层中记录任何问题或信息消息,或者我可以保持它们两者的清洁并使用 aop 方法来捕获数据并将其记录到日志文件中。 我无法决定什么是最好的方法,以及为什么。如果你有任何建议,请给我一些建议。谢谢。

【问题讨论】:

    标签: java spring rest logging spring-data-jpa


    【解决方案1】:

    解决这个问题的常用方法是在每一层都有一个 Logger 类的实例。

    例如:

    public class EmployeeService {
        private Logger logger = LoggerFactory.getLogger(EmployeeService.class);
    }
    
    public class EmployeeController {
        private Logger logger = LoggerFactory.getLogger(EmployeeController.class);
    }
    
    • 代码更加简洁
    • 您可以在类方法中记录日志,但知道 AOP 方法不允许这样做。

    【讨论】:

      【解决方案2】:

      使用 AOP 方法,您必须知道将创建新的额外类,并使用额外的逻辑为您的类提供日志记录功能。而正是这个新的类(代理)将被用来代替你的。这种方法存在一些问题,例如,当一个注释写入日志的方法调用另一个也以类似方式注释的方法时 - 在这种情况下,第二种方法不会写入日志。

      根据性能,这两种方法非常相似,只是在内存中使用 AOP 的类更多。

      另外,使用 AOP 你可以在方法调用之前或之后做一个日志,但是如果你需要在方法内部记录一些东西呢?

      我建议使用简单的方法并在类中声明记录器。在这种情况下,您的代码将更易于理解,并且您将拥有更好的灵活性。

      【讨论】:

        【解决方案3】:

        每个类都有用户自己的记录器对象是一个很好的方法,首先你肯定知道日志是在哪里初始化的,其次你可以灵活地配置日志的过程。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-06-18
          • 2023-03-07
          • 2019-08-24
          • 1970-01-01
          相关资源
          最近更新 更多