我有一些遗留代码,其中有很多 e.printStackTrace()
,由于显而易见的原因,这些代码没有打印在 log4j 文件中。最新的代码确实有 log.error("Exception returned in class::method",e);
。是否有一种标准方法可以在 log4j 中记录这些遗留的 e.printStackTrace()
?
这是我的 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
最佳答案
您可以将标准 System.err
重定向到 log4j。
这个问题及其答案应该可以解决问题:
如果可能的话,我仍然建议将 printStacktrace
重写为日志语句。
关于java - 将旧版 e.printStractTrace() 记录到 log4j,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9369107/