Equinox 应用程序:log4j 损坏的 eclipse 控制台输出
Equinox app: log4j broken eclipse console output
我在 Eclipse 插件项目 中使用 log4j,设置非常简单,我现在正在构建该项目。
我在主 class 中调用 BasicConfigurator.configure();
,然后在每个 class 中使用 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: 取消选中 "Limit console output" 的 idea 没有帮助。
编辑 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"
编辑 4: 干净的 Eclipse 版本修复了输出问题。但是使用干净版本意味着重新安装所有插件和工具。此外,我还必须从头开始配置我的首选项。也可能这又导致了问题,所以我宁愿找到问题的原因。
尝试从 my_package 记录器语句中删除 "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);
}
我在 Eclipse 插件项目 中使用 log4j,设置非常简单,我现在正在构建该项目。
我在主 class 中调用 BasicConfigurator.configure();
,然后在每个 class 中使用 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: 取消选中 "Limit console output" 的 idea 没有帮助。
编辑 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"
编辑 4: 干净的 Eclipse 版本修复了输出问题。但是使用干净版本意味着重新安装所有插件和工具。此外,我还必须从头开始配置我的首选项。也可能这又导致了问题,所以我宁愿找到问题的原因。
尝试从 my_package 记录器语句中删除 "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);
}