Equinox应用程序:log4j破坏了eclipse控制台输出



我正在构建一个Eclipse插件项目中使用log4j,设置非常简单。我在主类中调用BasicConfigurator.configure();,然后在每个类中使用log4j,如下所示:

private static final Logger logger= LogManager.getLogger(ClassName.class.getName());

这在一段时间内很好,但现在我对log4j有问题。我不确定发生了什么,但现在的日志级别似乎是level.WARN。控制台输出也有点坏。日志记录消息各记录两次。一次很正常,一次很奇怪:

!ENTRY org.apache.log4j 2 0 2017-01-10 13:19:58.192
!MESSAGE package.ClassName  - This is a logging message
0 [main] WARN package.ClassName  - This is a logging message

我不使用属性或xml文件,所以我无法想象我更改了什么。

编辑:我检查了程序的旧点,问题仍然存在。这应该意味着这不是代码本身的问题。Eclipse设置或类似的设置会影响控制台行为吗?

编辑2:取消选中"限制控制台输出"的想法没有帮助。

第3版:这些是我的依赖项:

Require-Bundle: org.eclipse.ui,
org.eclipse.emf.ecore;bundle-version="2.12.0",
org.eclipse.emf.ecore.xmi;bundle-version="2.12.0",
org.eclipse.core.resources;bundle-version="3.11.0",
org.eclipse.core.runtime;bundle-version="3.12.0",
org.eclipse.jdt.core;bundle-version="3.12.1",
org.eclipse.jdt.launching;bundle-version="3.8.100",
org.junit,
org.apache.log4j;bundle-version="1.2.15"

EDIT4:一个干净的Eclipse版本修复了输出问题。但使用干净的版本意味着要重新安装所有的插件和工具。此外,我还必须从头开始配置我的首选项。也许这会再次导致问题,所以我宁愿找到问题的原因。

尝试从my_package logger语句中删除"trace_file"指令。

试试这个

static {
PatternLayout layout = new PatternLayout();
String conversionPattern = "%d %-5p [%t] %c{2} (%2F:%M(%L)):%m%n";
layout.setConversionPattern(conversionPattern);
ConsoleAppender consoleAppender = new ConsoleAppender();
consoleAppender.setLayout(layout);
consoleAppender.activateOptions();
Logger rootLogger = Logger.getRootLogger();
rootLogger.setLevel(Level.INFO);
rootLogger.addAppender(consoleAppender);
}

最新更新