Java 在将带有Equinox Servle桥接器的OSGi应用程序部署到Tomcat时,如何配置Log4J?

Java 在将带有Equinox Servle桥接器的OSGi应用程序部署到Tomcat时,如何配置Log4J?,java,tomcat,log4j,osgi,equinox,Java,Tomcat,Log4j,Osgi,Equinox,使用部署我的OSGi web应用程序时,我会得到以下结果: log4j:WARN No appenders could be found for logger (org.springframework.osgi.extender.internal.activator.ContextLoaderListener). log4j:WARN Please initialize the log4j system properly. 我尝试了几种提供必要的“log4j.properties”文件的方法,

使用部署我的OSGi web应用程序时,我会得到以下结果:

log4j:WARN No appenders could be found for logger (org.springframework.osgi.extender.internal.activator.ContextLoaderListener).
log4j:WARN Please initialize the log4j system properly.
我尝试了几种提供必要的“log4j.properties”文件的方法,包括:

  • 将上下文参数“log4jconfig”添加到servlet桥web.xml
  • 在WEB-INF文件夹中创建一个文件夹“classes”,并在那里复制我的log4j.properties文件(并将其复制到其他几个位置)
  • 删除我的log4j包并将“extendedFrameworkExports”设置为org.apache.log4j,因此(我猜)使用tomcat log4j。。。这不起作用,因为我的依赖项需要一些slf4j类,这些类作为log4j包的片段提供。。。现在已经不存在了
当然,我还有一个片段包,它使用log4j.properties文件扩展了log4j包,但是看起来这个log4j包没有被使用

添加:我应该补充一点,我正在Eclipse中开发应用程序。。。我的配置log4j/slf4j的片段包在那里工作


有人解决了这个问题吗?有什么想法吗?

更新:这对解决您的问题没有帮助

我只是自己在研究OSGi

不完全是您想要的,但是下面讨论了使用vanilla equinox时的相同问题(即:不在tomcat/jetty中托管)

它建议创建一个“片段包”(示例可供下载)来保存log4j.properties。也许你可以试试类似的东西


或者您只需要将
log4j.properties
放在您的WAR的
META-INF
中?

我发现了我的错误。应该提供log4j.properties文件的片段没有包括它,因为我没有将它添加到二进制内置build.properties中。

我也有同样的问题,我将
log4j.properties
添加到我的
/src
文件夹中。

1。当您将应用程序作为.war部署到tomcat时,通常采用的片段包方法显然不起作用。2.我的war还没有META-INF文件夹,但我尝试了,但它也不起作用(我尝试了所有现有的文件夹,如WEB-INF、WEB-INF/eclipse等等)。在这之后,我遇到了一个后续问题,当我的应用程序包成功地通过log4j配置片段登录时,其他包没有。解决方案是确保这些bundle的“Import-Package:”属性中包含org.apache.log4j,即使它们不需要显式地进行编译。然后他们通过log4j包托管的片段找到了我的log4j.properties文件。谢谢你的提示!很高兴我能帮上忙。