java - 将旧版 e.printStractTrace() 记录到 log4j

标签 java log4j

我有一些遗留代码,其中有很多 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。

这个问题及其答案应该可以解决问题:

log4j redirect stdout to DailyRollingFileAppender

如果可能的话,我仍然建议将 printStacktrace 重写为日志语句。

关于java - 将旧版 e.printStractTrace() 记录到 log4j,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9369107/

相关文章:

java - 在 bean 构建中使用 Spring @Value

java - 在运行时获取安装的依赖版本

java - log4j 的示例 xml 配置,有一个 'main' java 应用程序并且想要写入文件

logging - JBoss webapp 上不显示 log4j 记录器消息

java - 在覆盖 equals 方法时使用 java Collection<E>.contains(Object o)

java - 通过 logback.xml 进行 Logback 结构化日志记录格式时间戳

java - Tree实现java中递归函数调用转换为lambda表达式

java - 如何配置 jetty 以使用 log4j?

java - Eclipse 控制台中出现 "Unable to parse type name from hyperlink"错误

python - 在列上应用正则表达式来检测 pyspark 数据框中日志的 log4j casee 的最佳实践是什么?