2012-06-14 82 views
0

我有一個web應用程序,運行在Windows上的Tomcat 7的vanilla安裝中,內部Tomcat日誌保持不變(默認)。在我的應用程序中,我使用了log4j,它有一個RollingFileAppender寫入TOMCAT/logs目錄(而不是localhost.yyyy-mm-dd.log)中我自己的應用程序日誌(app.log)。日誌似乎對我的應用程序工作正常,只是某些堆棧跟蹤不顯示在app.log中,而是顯示在localhost.yyyy-mm-dd.log中。例如,我的應用程序缺少commons-validators類,並且此堆棧跟蹤未顯示在app.log中。在Tomcat中使用Log4j進行應用程序日誌記錄7

我不知道如何讓這些堆棧跟蹤顯示在我的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 

回答

1

我發現這個問題。我正在使用org.springframework.stereotype.Controller註釋來標記我的控制器類。我正在失去的具體例外是在這個班裏產生的。該解決方案是一個@ExceptionHandler標註添加到類中的方法,我可以重定向例外Log4J採用類似這樣:

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

沒有@ExceptionHandler裝飾方法的堆棧跟蹤正在吐出到stderr從而結束在localhost.yyyy-mm-dd.log中。

0

你如何做堆棧跟蹤日誌?

在我的情況下,

Logger log = Logger.getLogger(HogeServlet.class); 
try { 
    // Something 
} catch (HogeException e) { 
    log.error("Hoge Error !!", e); // Print stack trace 
} 
+0

是的,這也是我的做法。 – Tom

相關問題