我将控制台输出重定向到 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/