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

Java 在Eclipse4(RCP/SWT/OSGi)应用程序中包含log4j的正确方法,java,eclipse,plugins,eclipse-plugin,osgi,Java,Eclipse,Plugins,Eclipse Plugin,Osgi,这是我的后续行动,其中建议一些库(如log4j)已作为捆绑包提供。 在EclipseIndigo中,作为安装的一部分,我找不到可用于导入包的log4j捆绑包,因此我创建了一个从JAR存档到捆绑log4j的插件项目,以及一个捆绑log4j.xml配置的功能项目 老实说,我不明白为什么需要片段项目,但这个过程是有效的。 所以我现在的问题是: 由于log4j.xml是作为功能jar的一部分在导出中提供的,因此需要一些“努力”才能找到它并更新调试级别,因此我想知道这确实是正确的过程吗? 我认为最终导出的

这是我的后续行动,其中建议一些库(如log4j)已作为捆绑包提供。
在EclipseIndigo中,作为安装的一部分,我找不到可用于导入包的log4j捆绑包,因此我创建了一个从JAR存档到捆绑log4j的
插件项目,以及一个捆绑
log4j.xml
配置的
功能项目

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


这里有什么帮助吗?

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

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

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

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

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

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

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

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

如果您确实需要公开该文件,可以将其放在任意位置,然后确保您的程序在启动时调用以下方法之一:

  • org.apache.log4j.xml.DOMConfigurator.(字符串文件名)
  • org.apache.log4j.PropertyConfigurator。(字符串 配置文件名)
如果您希望在不重新启动应用程序的情况下更改配置,请使用“configureAndWatch”变体


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

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

  • org.apache.log4j.xml.DOMConfigurator.(字符串文件名)
  • org.apache.log4j.PropertyConfigurator。(字符串 配置文件名)
如果您希望在不重新启动应用程序的情况下更改配置,请使用“configureAndWatch”变体


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

1)但是使用
log4j
期望部署后更新
log4j.xml
不是很自然吗?有什么不同的方法吗?通常对日志做什么?2)我读到使用目标是一种不好的做法平台,因为我在部署中可能有问题。我错了吗?1)但是使用
log4j
不是很自然地期望
log4j.xml
在部署后会更新吗?有什么不同的方法?通常对日志记录做什么?2)我读到使用目标平台是一种不好的做法,因为我在部署中可能有问题部署。我错了吗?我会试试这个,但为什么你说“如果你真的需要…”?log4j中的想法是最终用户可以在需要时打开/关闭调试。不确定你的观点是什么。我已经更新了我的答案并进行了澄清,感谢你指出这一点,Cratylus.:-)一直在调试吗