【问题标题】:Problems with using Log4j 2 in GAE在 GAE 中使用 Log4j 2 的问题
【发布时间】:2013-06-07 08:14:22
【问题描述】:

我刚刚将所有 java.util.logging 代码迁移到我的 GAE/J 应用程序中的 log4j 但是我收到了这个错误:

[INFO] Caused by: java.lang.NoClassDefFoundError: java.lang.management.ManagementFactory is a restricted class. Please see the Google  App Engine developer's guide for more details.
[INFO]  at com.google.appengine.tools.development.agent.runtime.Runtime.reject(Runtime.java:51)
[INFO]  at org.apache.logging.log4j.core.appender.rolling.OnStartupTriggeringPolicy.<clinit>(OnStartupTriggeringPolicy.java:33)
[INFO]  at java.lang.Class.forName0(Native Method)
[INFO]  at java.lang.Class.forName(Class.java:186)
[INFO]  at org.apache.logging.log4j.core.config.plugins.PluginManager.decode(PluginManager.java:222

有解决办法吗?

Log4j 的依赖是通过:

    <dependency>
        <groupId>org.apache.onami.logging</groupId>
        <artifactId>org.apache.onami.logging.log4j2</artifactId>
        <version>3.4.0-incubating</version>
    </dependency>

【问题讨论】:

  • 你看开发者指南了解详情了吗?
  • 错误详情?
  • 错误信息非常清楚 - OnStartupTriggeringPolicy 引用 ManagementFactory - 这在 GAE 上是不允许的。我对 Log4j 2 不太了解 - 您的配置中是否有办法禁用 OnStartUpTriggeringPolicy 或使用不使用 MX bean 的其他实现,例如删除

标签: java google-app-engine logging log4j log4j2


【解决方案1】:

您可以通过设置系统属性来禁用 log4j2 中的 JMX:log4j2.disable.jmx=truehttp://logging.apache.org/log4j/2.x/manual/jmx.html

【讨论】:

  • 我在 appengine-web.xml 中添加了一个系统属性 但仍然得到有关 ManagementFactory 的异常。跨度>
  • 你能发布你的配置吗?你能避免在你的配置中使用 OnStartupTriggeringPolicy 吗?我提出了一个 log4j2 JIRA 票 issues.apache.org/jira/browse/LOG4J2-379
  • Marcel,log4j2 现在在主干中对此进行了修复。此修复程序将包含在下一个(也可能是最后一个)测试版 beta-9 中。
  • 更新:Beta-9 没有正确解决这个问题。现在主干中还有另一种解决方案。如果任何有权访问 GAE 的人都可以验证 Log4J 中继日志记录在 GAE 中是否有效,那就太好了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-21
  • 1970-01-01
  • 2023-03-29
  • 2011-11-19
相关资源
最近更新 更多