【问题标题】:How to configure Log4J when deploying an OSGi app with the Equinox Servle Bridge to Tomcat?将带有 Equinox Servle Bridge 的 OSGi 应用程序部署到 Tomcat 时如何配置 Log4J?
【发布时间】:2009-04-01 13:52:53
【问题描述】:

使用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”文件,包括:

  • 将上下文参数“log4jConfigLocation”添加到 servlet 桥 web.xml
  • 在 WEB-INF 文件夹中创建一个文件夹“classes”并将我的 log4j.properties 文件复制到那里(并复制到其他几个位置)
  • 删除我的 log4j 包并将“extendedFrameworkExports”设置为 org.apache.log4j 所以(我猜)使用了 tomcat log4j ...这不起作用,因为我的依赖项需要一些 slf4j 类,这些类作为片段提供log4j 捆绑包......不再存在......

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

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

有人解决了吗?有什么想法吗?

【问题讨论】:

    标签: java tomcat log4j osgi equinox


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 在此之后,我遇到了一个后续问题,当我的应用程序包成功通过 log4j 配置片段记录时,其他包没有。解决方案是确保这些包在其“Import-Package:”属性中具有 org.apache.log4j,即使它们没有明确需要导入进行编译。然后他们通过由 log4j 包托管的片段找到了我的 log4j.properties 文件。
      • 感谢您的提示!很高兴我能提供帮助。
      【解决方案3】:

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

      我自己只是在研究 OSGi。

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

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

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

      【讨论】:

      • 1.当您将应用程序作为 .war 部署到 tomcat 时,您通常采用的片段捆绑方法显然不起作用。 2. 我的战争还没有 META-INF 文件夹,但我试过了,它也不起作用(我已经尝试了所有现有的文件夹,如 WEB-INF、WEB-INF/eclipse ......)
      猜你喜欢
      • 2011-04-23
      • 1970-01-01
      • 2011-09-06
      • 1970-01-01
      • 2017-04-20
      • 2019-07-28
      • 2016-12-25
      • 2013-05-14
      • 2014-06-27
      相关资源
      最近更新 更多