Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 日志记录和SpringRESTMVC应用程序_Java_Spring_Rest_Logging_Spring Data Jpa - Fatal编程技术网

Java 日志记录和SpringRESTMVC应用程序

Java 日志记录和SpringRESTMVC应用程序,java,spring,rest,logging,spring-data-jpa,Java,Spring,Rest,Logging,Spring Data Jpa,我有一个springrest应用程序,其中springrest控制器在前面,springservices在中间,springjpa存储库在服务后面。rest控制器只是将请求委托给服务层。现在的问题是,我可以在服务层或控制器层记录任何问题或信息消息,或者我可以保持它们的整洁,并使用aop方法捕获数据并将其记录到日志文件中。 我无法决定什么是最好的方法,以及为什么。如果你有什么建议,请给我一些建议。谢谢。使用AOP方法,您必须知道新的额外类将使用额外的逻辑创建,这些逻辑将为您的类提供日志记录功能。确

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

使用AOP方法,您必须知道新的额外类将使用额外的逻辑创建,这些逻辑将为您的类提供日志记录功能。确切地说,这个新类(代理)将取代您的类。这种方法有一些问题,例如,当一个注释为写日志的方法调用另一个同样以类似方式注释的方法时——在这种情况下,第二个方法不会写日志

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

另外,使用AOP,您可以在方法调用之前或之后创建一个日志,但若您需要在方法内部记录一些内容,该怎么办


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

使用AOP方法,您必须知道,将使用额外的逻辑创建新的额外类,这些逻辑将为您的类提供日志记录功能。确切地说,这个新类(代理)将取代您的类。这种方法有一些问题,例如,当一个注释为写日志的方法调用另一个同样以类似方式注释的方法时——在这种情况下,第二个方法不会写日志

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

另外,使用AOP,您可以在方法调用之前或之后创建一个日志,但若您需要在方法内部记录一些内容,该怎么办


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

这是每个类用户自己的日志对象的好方法,首先您肯定知道日志的初始化位置,其次您可以灵活地配置日志过程。

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

处理此问题的常用方法是在每个层中都有一个Logger类的实例

例如:

public class EmployeeService {
    private Logger logger = LoggerFactory.getLogger(EmployeeService.class);
}

public class EmployeeController {
    private Logger logger = LoggerFactory.getLogger(EmployeeController.class);
}
  • 代码要干净得多
  • 您有可能在类方法内进行日志记录,因为您知道AOP方法不允许这样做

    • 处理此问题的常用方法是在每个层中都有一个Logger类的实例

      例如:

      public class EmployeeService {
          private Logger logger = LoggerFactory.getLogger(EmployeeService.class);
      }
      
      public class EmployeeController {
          private Logger logger = LoggerFactory.getLogger(EmployeeController.class);
      }
      
      • 代码要干净得多
      • 您有可能在类方法内进行日志记录,因为您知道AOP方法不允许这样做