gpt4 book ai didi

tomcat - 在 Tomcat 7 中使用 Log4j 进行应用程序日志记录

转载 作者:行者123 更新时间:2023-11-28 23:05:07 25 4
gpt4 key购买 nike

我有一个 Web 应用程序运行在 Windows 上的 Tomcat 7 vanilla 安装中,内部 Tomcat 日志记录保持不变(默认)。在我的应用程序中,我使用 log4j,它有一个 RollingFileAppender 写入我自己的应用程序日志 (app.log) 在 TOMCAT/logs 目录(不是 localhost.yyyy-mm-dd.log)中。日志记录对我的应用程序来说似乎工作正常,只是一些堆栈跟踪没有显示在 app.log 中,而是显示在 localhost.yyyy-mm-dd.log 中。例如,我的应用程序缺少 commons-validators 类,并且此堆栈跟踪没有显示在 app.log 中。

我不确定如何让这些堆栈跟踪显示在我的 app.log 中?我的 log4j.properties 文件在这里:

### Root Level ###
log4j.rootLogger=WARN, LOGFILE

### Application Level ###
log4j.logger.com.ccn=TRACE

### Spring ###
log4j.logger.org.springframework.core=INFO
log4j.logger.org.springframework.beans=INFO
log4j.logger.org.springframework.context=INFO
log4j.logger.org.springframework.web=INFO

### Configuration for the LOGFILE appender ###
log4j.appender.LOGFILE=org.apache.log4j.RollingFileAppender
log4j.appender.LOGFILE.MaxFileSize=5MB
log4j.appender.LOGFILE.MaxBackupIndex=10
log4j.appender.LOGFILE.File=$\{catalina.home\}/logs/app.log
log4j.appender.LOGFILE.Append=true
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=[%p %d %t] %c [%C{1}.%M(): "%m"]%n

最佳答案

我发现了问题。我正在使用 org.springframework.stereotype.Controller 注释来标记我的 Controller 类。我正在丢失的特定异常是在这个类中生成的。解决方案是向类中的方法添加一个 @ExceptionHandler 注释,在该类中我可以将异常重定向到 Log4j,类似于此:

@ExceptionHandler
public void handleException(Exception e) {
logger.error("Error: ", e);
}

如果没有 @ExceptionHandler 装饰方法,堆栈跟踪将被吐出到 stderr,最终出现在 localhost.yyyy-mm-dd.log 中。

关于tomcat - 在 Tomcat 7 中使用 Log4j 进行应用程序日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11034741/

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