Запись устаревшего e.printStractTrace() в log4j
У меня есть старый код, где много e.printStackTrace()
они не печатаются в файле log4j по понятным причинам. Последний код имеет log.error("Exception occured in class::method",e);
, Есть ли стандартный способ регистрации этих наследий e.printStackTrace()
в 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
1 ответ
Решение
Вы можете перенаправить стандарт System.err
в log4j.
Этот вопрос и его ответы должны сделать свое дело:
log4j перенаправить стандартный вывод в DailyRollingFileAppender
Хотя, если это возможно, я все равно рекомендую переписать printStacktrace
в журнал заявлений.