2012-02-20 18 views
0

我有一些遺留的代碼,其中有很多e.printStackTrace(),由於顯而易見的原因,這些代碼沒有打印在log4j文件中。最新的代碼確實有log.error("Exception occured in class::method",e);。有沒有一種標準的方式在log4j中記錄那些傳統的e.printStackTrace()記錄傳統的e.printStractTrace()到log4j

這是我的log4j.properties。我設立的屬性文件/日誌文件名內碼

PropertyConfigurator.configure("log4j.properties"); 
setLog4jFile("log.txt"); 

private static void setLog4jFile(String logFileName) { 
     try { 
      Logger rootLogger = Logger.getRootLogger(); 
      RollingFileAppender appender = new RollingFileAppender(new PatternLayout("%p %t %c - %m%n"), logFileName, false); 
      appender.setMaxFileSize("10000KB"); 
      appender.setMaxBackupIndex(10); 
      rootLogger.addAppender(appender); 
     }catch (Exception e) { 
      e.printStackTrace(); 
     } 
} 

log4j.properties

log4j.rootCategory=info, stdout 
log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F%L) - %m%n 

回答

2

您可以將標準System.err重定向到log4j的。

這個問題和它的答案應該做的伎倆:

log4j redirect stdout to DailyRollingFileAppender

如果可能的話,雖然,我仍然建議printStacktrace的改寫成日誌語句。

+0

謝謝,這很有道理! – nilesh 2012-02-22 15:13:58