【发布时间】:2016-06-29 13:49:41
【问题描述】:
我创建了使用 @ControllerAdivce 注释的 ExcpetionHandler 类,使用 Eclipse Tomcat 服务器可以正常工作。
当我构建项目并将其部署到某些 unix 机器上的 tomcat 时,异常处理程序没有被触发。
我注意到一些 log4j 警告仅在 unix 机器上生成。
log4j xml 已配置,所有附加程序都在工作。
只有在添加了以下类后,我才开始收到以下 log4j 消息。
有什么想法吗?
@ControllerAdvice
public class ExceptionController {
@ExceptionHandler(RuntimeException.class)
public ResponseEntity<ClientErrorMessage> handleRunTimeException(HttpServletRequest request, RuntimeException exception) {
ClientErrorMessage message = SOME_MESSAGE
return new ResponseEntity<>(message, HttpStatus.INTERNAL_SERVER_ERROR);
}
}
log4j:WARN 找不到记录器的附加程序(org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver)。 log4j:WARN 请正确初始化 log4j 系统。 log4j:WARN 请参阅http://logging.apache.org/log4j/1.2/faq.html#noconfig 了解更多信息。
【问题讨论】:
-
看起来 log4j.XML 不在应用程序的类路径中
-
它是,如果不是所有其他附加程序都不能正常工作,但它们正在工作。
-
文件在哪里,内容是什么?
-
我通过提供 JAVA_OPTS -Dlog4j.configuration 来提供路径。我可能会发现问题,将对其进行测试并更新。我想我需要为 org.springframework.web 包添加附加程序。目前我没有这个附加程序。
-
是的,问题是缺少 spring web 包的附加程序。感谢您的帮助
标签: java spring tomcat log4j exceptionhandler