0

这是一个后续(不知何故我的第三方依赖于一个 OSGi 应用程序),其中建议某些库(例如 log4j)已经作为捆绑包提供。
在 Eclipse Indigo 中,我在安装过程中找不到可用的 log4j 捆绑包Import Package,因此我创建了一个Plugin Project from JAR archive用于捆绑 log4j 以及一个Feature Project用于捆绑此帖子之后log4j.xml的配置。

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

这里有什么帮助吗?

4

3 回答 3

2

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

  • org.apache.log4j.xml.DOMConfigurator。配置(字符串文件名)
  • org.apache.log4j.PropertyConfigurator。配置(字符串配置文件名)

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

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

于 2012-10-18T12:19:51.560 回答
1

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

于 2012-10-01T09:26:14.567 回答
1

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

这并不意味着在部署后进行更改,因为它将嵌入到 jar 文件中。如果您希望在部署后使其可配置,您将不得不提出一种不同的方法。

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

于 2012-10-01T17:07:13.240 回答