java - sysout 重定向到 swing 控制台,log4j 内容不会

标签 java log4j

我将控制台输出重定向到 swing 控制台。当我将 sysout 添加到代码中时,文本出现在 swing 组件中。 现在我认为 log4j 的控制台输出也会出现在这个 swing 组件中。但任何 log.info() 消息仍然出现在 Eclipse 控制台中。 当我调试将消息重定向到 swing 组件的 Handeler 时,我可以看到记录器的消息不会从那里传递。然而 Sysout 消息确实如此。

任何人都可以给我提示这里可能出了什么问题吗?我可以同时拥有两个控制台吗?

这是我的 log4j 配置:

log4j.rootLogger=INFO, stdout, file
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %C{1} - %m%n
log4j.appender.stdout.filter.filtro=org.apache.log4j.varia.LevelRangeFilter
log4j.appender.stdout.filter.filtro.levelMin=ALL
log4j.appender.stdout.filter.filtro.levelMax=FATAL

最佳答案

解决方案非常简单,但很难跟踪。我在 GUI 类中使用了 Logger,其中包含控制台组件。所以我猜想记录器是在执行将其重定向到 swing 控制台的代码之前初始化的。当执行此代码时,由于 Logger 已设置,因此它保持原样。

当我从 GUI 类中删除记录器时,一切正常。

关于java - sysout 重定向到 swing 控制台,log4j 内容不会,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47334996/

相关文章:

java - 一个 log4j.xml - 许多脚本

java - Android运行时错误: error opening trace file: No such file or directory (2)

java - 如何在没有 Android Studio/XML 的情况下包含原始文件?

java - 在 fragment 和列表 fragment 之间切换会导致错误

gradle - 使用Gradle将org.apache.kafka添加到依赖项

java - log4j冲突?

java - 未创建 Log4j 文件 : logging from the application running on WAS6. 1

java - 光学聚类算法。如何获得最好的epsilon

java - 使用 GWT Graphics 在 Vaadin Java 中创建新线程

java - 我可以在每个级别而不是每个类(class)的 Log4j2 中创建记录器吗?