gpt4 book ai didi

java - Spring MVC 中的日志记录

转载 作者:行者123 更新时间:2023-12-01 17:32:31 28 4
gpt4 key购买 nike

我目前正在使用 Spring MVC 开发一个 Web 应用程序,并在应用程序的每个 Controller 中使用 @ExceptionHandler 注释。

所以基本上我有一个这样的方法:

@ExceptionHandler(RuntimeException.class)
public String handleException(RuntimeException ex) {
injectedService.notifyAndLogException(ex.getMessage());
return ("error_page");
}

我的想法是在注入(inject)的服务中记录并向应用程序管理员发送电子邮件。目前,我已经尝试阅读一些有关在 Spring 应用程序中进行日志记录的文档,我所看到的所有内容都是在每个 Controller 中设置静态记录器。

像这样:

 private final Logger log = LoggerFactory.getLogger(Controller.class);

@ExceptionHandler(RuntimeException.class)
public String handleException(RuntimeException ex) {
log.info("Logging error");
injectedService.notifyException(ex.getMessage());
return ("error_page");
}

我想知道在每个 Controller 中使用记录器而不是仅在一个点(服务)中使用它有什么意义?

最佳答案

I'd like to know what is the point to use a logger in each controller instead of using it in one point only

如果您对整个应用程序使用单个记录器,则每条日志消息都将被记录为来自同一组件。通过为每个类或组件使用记录器,您的日志文件将包含有关哪个组件记录消息的信息。

例如,当您这样做时:

Logger log = LoggerFactory.getLogger(Controller.class);

这将创建一个具有 Controller 类名称的记录器,该名称通常会显示在日志文件中,例如

2012-03-07:12:59:00 com.x.y.Controller Hello!

这只是一个约定,但我建议您遵循它。

关于java - Spring MVC 中的日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9601926/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com