2012-02-20 5 views
0

У меня есть код устаревшего кода, где есть много e.printStackTrace(), которые не отображаются в файле log4j по понятным причинам. В последнем коде есть log.error("Exception occured in class::method",e);. Есть ли стандартный способ регистрации этих объектов e.printStackTrace() в log4j?Занесение в исходное состояние 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 «S в отчетности журнала.

+0

Спасибо, это имеет смысл! – nilesh

Смежные вопросы