Java sysout重定向到swing控制台,log4j内容赢得´;T

Java sysout重定向到swing控制台,log4j内容赢得´;T,java,log4j,Java,Log4j,我将控制台输出重定向到swing控制台。当我向代码中添加sysout时,文本出现在swing组件中。 现在我认为log4j的控制台输出也会出现在这个swing组件中。但是任何log.info()消息仍然出现在eclipse控制台中。 当我调试将消息重定向到swing组件的Handler时,我可以看到记录器的消息没有经过那里。然而,Sysout消息确实如此 谁能给我一个提示,这里可能出了什么问题?我能同时要两台控制台吗 这是我对log4j的配置: log4j.rootLogger=INFO, st

我将控制台输出重定向到swing控制台。当我向代码中添加sysout时,文本出现在swing组件中。 现在我认为log4j的控制台输出也会出现在这个swing组件中。但是任何log.info()消息仍然出现在eclipse控制台中。 当我调试将消息重定向到swing组件的Handler时,我可以看到记录器的消息没有经过那里。然而,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控制台的代码之前初始化的。当执行此代码时,由于记录器已经设置好,它保持原样


当我从GUI类中删除logger时,一切正常。

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

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