【问题标题】:Eclipse4 RCP: Configure log4j with fragment pluginEclipse4 RCP:使用片段插件配置 log4j
【发布时间】:2013-12-05 06:48:40
【问题描述】:

所以这是一个由这个问题引起的后续问题: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

任何想法我做错了什么?

【问题讨论】:

  • 可能是这样,log4j.properties 不在日志插件的类路径中。不确定如何使用您的设置进行配置,但您可以尝试的一件事是调用 PropertyConfigurator.configure(properties/fileName);
  • 我确定它不是我的类路径的一部分,但我不知道为什么。我既不知道如何检查片段插件是否已加载,也不知道属性文件是否已“添加”到我的 rcp 应用程序中。调用您提出的函数会导致“无法读取配置文件 [log4.properties] 后跟 java.io.FileNotFoundException。我的设置并不复杂。它是一个标准的 eclipse4 rcp,带有一个用于 log4j 的插件和一个用于配置文件的片段插件.

标签: log4j eclipse-rcp


【解决方案1】:

我不确定,使用片段来保存配置的目的是什么。尝试将您的 log4j,properties(注意文件名在您的答案中拼写错误)直接放置到您的插件根文件夹中。在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 子类取代。

其次,必须将 Category 映射到 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

【讨论】:

  • 看起来我的 rcp 现在找到了文件,但仍然存在问题。执行 configure 方法时收到以下错误消息:“找不到根类别信息。可以吗?”当我尝试记录一些文本时,我收到与最初相同的错误消息:找不到类别 (MyPlugin) 的附加程序。请正确初始化log4j系统。
  • 我现在也在使用这个问题提出的 log4 配置:stackoverflow.com/questions/2128185/…
  • 如果您找到了 Logger,请尝试使用它。在 log4j.properties 中创建 appender MYPlugin
  • “创建 apender MyPlugin”是什么意思。无论如何感谢您的帮助!我根本不想使用自定义附加程序。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-26
  • 2018-05-30
  • 2023-03-25
  • 2011-05-30
  • 2013-02-08
  • 1970-01-01
相关资源
最近更新 更多