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

时间:2012-09-30 09:09:21

标签: java eclipse plugins eclipse-plugin osgi

这是一个后续行动(某种方式是我的Third-party dependencies to an OSGi application),其中有人建议使用某些库,例如log4j 已经可用作为捆绑包 在Eclipse Indigo中,作为安装的一部分,我找不到Import Package可用的log4j软件包,因此我创建了一个Plugin Project from JAR archive来捆绑log4j,还创建一个Feature Project来捆绑log4j.xml } post之后的配置。

说实话,我不明白为什么需要片段项目,但这个过程是有效的 所以我现在的问题是:
由于log4j.xml作为功能jar的一部分在导出中提供,因此需要一些“努力”才能找到它并更新调试级别,所以我想知道这确实是正确的过程吗?
我记得最终导出的产品会在一个易于查找的位置提供log4j配置,但现在(虽然记录工作)我担心我做的是否确实是正确的。

这里有任何帮助吗?

3 个答案:

答案 0 :(得分:2)

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

  • org.apache.log4j.xml.DOMConfigurator。configure(String filename)
  • org.apache.log4j.PropertyConfigurator。configure(字符串 configFilename)

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

编辑:我写了“如果你真的需要”,因为我经历过,我从不需要在部署后打开调试日志,因为它总是打开!对于我对响应时间和吞吐量有正常(但不是极端)要求的应用程序,这是可以的。记录到UDP-appender很快(并且不会填满磁盘)。或者使用滚动文件appender是非常安全的,并且足够快我的使用。在确定那些难以重现的错误时,始终使用调试日志可以节省生命。

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

这并不意味着在部署后会被更改,因为它将嵌入在jar文件中。如果您希望在部署后使其可配置,则必须提出不同的方法。

注意: 我担心你误解了已经作为捆绑包装的罐子的答案。这并不意味着它们是您选择的OSGi平台(Indigo)的一部分,只是它们已经准备好按原样部署到OSGi平台。您不需要创建插件项目,只需将jar添加到目标平台即可解决丢失的导入问题。