Eclipse4 RCP:使用片段插件配置log4j

时间:2013-11-20 13:15:04

标签: log4j eclipse-rcp

因此,这是一个由此问题引起的后续问题:Using log4j in eclipse RCP doesn't work

到目前为止,我可以在我的RCP中使用log4j API但是在使用以下命令运行它时

Category CAT = Category.getInstance(getClass().getSimpleName());
CAT.debug("Application has been started");

我得到了那个例外:

No appenders could be found for category (MyPlugin).
Please initialize the log4j system properly.

我创建了一个包含名为log4j.properties的文件的片段插件,片段主机是包含log4j API的插件。属性文件位于片段插件的“根”中

我的log4j.properties文件如下所示:

# Set root logger level to debug and its only appender to default.
log4j.rootLogger=debug, default
# default is set to be a ConsoleAppender.
log4j.appender.default=org.apache.log4j.ConsoleAppender
# default uses PatternLayout.
log4j.appender.default.layout=org.apache.log4j.PatternLayout
log4j.appender.default.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

任何想法我做错了什么?

1 个答案:

答案 0 :(得分:2)

我不确定,使用片段保存配置的目的是什么。尝试将您的log4j属性(请注意,您的答案中拼写错误的文件名)直接放到插件根文件夹中。在Activator.start()执行以下代码:

public void start(BundleContext context) throws Exception {
  super.start(context);
  URL installURL = plugin.getBundle().getEntry("/");
  String installPath = Platform.asLocalURL(installURL).getFile();
  PropertyConfigurator.configure(installPath +"/log4j.properties");
}

首先,类别文档说:此类已被弃用并由Logger子类替换。

其次,必须将类别映射到appender:

log4j.category.MyPlugin=info,MyPlugin
log4j.appender.MyPlugin=org.apache.log4j.DailyRollingFileAppender
log4j.appender.MyPlugin.layout=org.apache.log4j.PatternLayout
log4j.appender.MyPlugin.layout.ConversionPattern={%t} %d - [%p] %c: %m %n
log4j.appender.MyPlugin.file=C:/logs/MyPlugin.log
log4j.appender.MyPlugin.DatePattern='.' yyyy-MM-dd-HH-mm