Java 何时何地在spring boot应用程序中应用日志记录

Java 何时何地在spring boot应用程序中应用日志记录,java,spring,logging,log4j,Java,Spring,Logging,Log4j,我已经升级了一个spring启动应用程序集,包括使用log4j进行日志记录。在应用程序中,有几个层,例如控制器、服务、模型、存储库、异常等。目前,我在异常层中包含了错误级别的日志 @Component public class ExceptionFactory { private static final Logger LOG = LoggerFactory.getLogger(ExceptionFactory.class); public static Applicat

我已经升级了一个spring启动应用程序集,包括使用log4j进行日志记录。在应用程序中,有几个层,例如
控制器、服务、模型、存储库、异常
等。目前,我在
异常
层中包含了错误级别的日志

@Component
public class ExceptionFactory {

    private static final Logger LOG =   LoggerFactory.getLogger(ExceptionFactory.class);

    public static ApplicationSpecificException create(final Throwable cause, final ExceptionType exceptionType, final Object... messageArguments) {
        LOG.error(MessageFormat.format(exceptionType.getMessage(), messageArguments), cause);
        return new ApplicationSpecificException (exceptionType, cause, messageArguments);
    }

    public static ApplicationSpecificException create(final ExceptionType exceptionType, final Object... messageArguments) {
        LOG.error(MessageFormat.format(exceptionType.getMessage(), messageArguments));
        return new ApplicationSpecificException(exceptionType, messageArguments);
    }
}
  • 在上述任何层中使用日志记录是否合适
  • Log4j具有日志级别,例如致命错误警告信息调试跟踪。在登录Spring应用程序时,如何确定使用这些级别的情况

  • 第一个问题的答案: 日志记录是一个所谓的“交叉关注点”,这意味着它与问题域无关,因此它出现在代码中的任何地方,每一层

    您的第二个问题在这里得到了回答:

    老实说,我看不出单独的异常层有什么用途。你想用它实现什么?我使用了一个工厂,使它成为一个交叉关注点。在这个链接中可以找到更多信息