在使用Equinox Servle Bridge将OSGi应用程序部署到Tomcat时,如何配置Log4J?

时间:2009-04-01 13:52:53

标签: java tomcat log4j osgi equinox

使用equinox servlet bridge部署我的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”文件的方法,包括:

  • 将context-param“log4jConfigLocation”添加到servlet bridge web.xml
  • 在WEB-INF文件夹中创建文件夹“classes”并在其中复制我的log4j.properties文件(并在其他几个位置复制)
  • 删除我的log4j包并将“extendedFrameworkExports”设置为org.apache.log4j所以(我猜)使用了tomcat log4j ...这不起作用,因为我的依赖项需要一些slf4j类,它们作为片段提供给log4j bundle ...已经不存在......

当然我还有一个片段包,它使用log4j.properties文件扩展log4j包,但看起来这个log4j包没有被使用。

ADDED:我应该补充一点,我正在Eclipse中开发应用程序......我的片段包用于配置log4j / slf4j。

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

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:3)

感谢arturh。我遇到过同样的问题。我将log4j.properties添加到我的/ src文件夹中。

答案 2 :(得分:2)

更新:这对您的问题没有任何帮助......

我自己就是在研究OSGi。

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

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

或许您只需要将log4j.properties置于WAR的META-INF内?