在Eclipse 4(RCP/SWT/OSGi)应用程序中包含log4j的正确方式



这是我对OSGi应用程序的第三方依赖的后续操作,其中建议一些库(如log4j)已经作为捆绑包可用
在Eclipse Indigo中,作为安装的一部分,我找不到可用于Import Package的log4j捆绑包,因此我在这篇文章之后创建了一个Plugin Project from JAR archive来捆绑log4j,还创建了Feature Project来捆绑log4j.xml配置。

老实说,我不明白为什么需要碎片项目,但这个过程是有效的
所以我现在的问题是:
由于log4j.xml是作为功能jar的一部分在导出中交付的,因此需要一些"努力"才能找到它并更新调试级别,所以我想知道这确实是正确的过程吗
我曾想过,最终导出的产品将在一个容易找到的位置提供log4j配置,但现在(尽管日志记录有效)我担心我所做的是否确实正确。

这里有人帮忙吗?

如果你真的需要公开文件,你可以把它放在你想要的任何地方,然后确保你的程序在启动时调用以下方法之一:

  • org.apache.log4j.xml.DOMConfigurator.configure(字符串文件名)
  • org.apache.log4j.PropertyConfigurator.configure(字符串configFilename)

如果您想在不重新启动应用程序的情况下更改配置,请使用"configureAndWatch"变体。

编辑:我写"如果你真的需要",因为我经历过在部署后我永远不需要打开调试日志,因为它总是打开的!这对于那些对响应时间和吞吐量有正常(但不是极端)要求的应用程序来说是可以的。登录到UDP附加程序很快(不会填满磁盘)。或者使用滚动文件附加程序是非常安全的,而且速度足够快,适合我使用。当确定那些难以重现的错误时,总是有可用的调试日志是一个救命稻草。

我建议看一下Pax Logging,它将为您提供在OSGi环境中使用的各种日志框架。您可以使用外部配置文件(不需要扩展程序)来配置日志记录。

片段是扩展log4j-bundles类路径以包含所需配置文件的一个选项。这可能是配置应用程序范围属性的最简单方法。

不过,这并不意味着在部署后会更改,因为它将嵌入到jar文件中。如果您希望在部署后进行配置,则必须想出一种不同的方法。

注意:恐怕您误解了关于已捆绑提供的罐子的答案。这并不意味着它们是您选择的OSGi平台(Indigo)的一部分,只是意味着它们已经准备好按原样部署到OSGi平台。您创建插件项目是不必要的,您只需要将jar添加到目标平台即可解决丢失的导入。

最新更新