因此,这是一个由此问题引起的后续问题: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
任何想法我做错了什么?
答案 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