首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hazelcast IMDG3.12.5添加log4j依赖性以支持日志记录

Hazelcast IMDG3.12.5添加log4j依赖性以支持日志记录
EN

Stack Overflow用户
提问于 2020-06-26 05:48:37
回答 2查看 428关注 0票数 0

我使用下面的链接跟踪了支持log4j的hazelcast文档:

https://docs.hazelcast.org/docs/latest/manual/html-single/#logging-configuration

但即使这样做了,我也无法得到黑兹尔卡斯特原木。

查询:

  1. 我们是否需要显式地添加log4j-1.2.17.jar文件并将此依赖项添加到pom.xml文件中?如果是,请告诉我黑兹尔卡斯特文档中缺少什么。
  2. 是否有可能排除故障并检查错误是什么?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-06-26 07:20:54

在您共享的Hazelcast参考手册部分中有一条注释。它解释了这个问题:

如果选择使用log4jlog4j2slf4j,则应在类路径中包含适当的依赖项。

意思是,是的。如果您使用与java.util.logging不同的日志记录框架,那么您必须自己提供实现。

如果不提供适当的实现,节点将无法启动:

代码语言:javascript
复制
java -Dhazelcast.logging.type=log4j -jar \
    ~/.m2/repository/com/hazelcast/hazelcast/3.12.5/hazelcast-3.12.5.jar 
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/log4j/Logger
    at com.hazelcast.logging.Log4jFactory.createLogger(Log4jFactory.java:29)
    at com.hazelcast.logging.LoggerFactorySupport$1.createNew(LoggerFactorySupport.java:32)
    at com.hazelcast.logging.LoggerFactorySupport$1.createNew(LoggerFactorySupport.java:30)
    at com.hazelcast.util.ConcurrencyUtil.getOrPutIfAbsent(ConcurrencyUtil.java:125)
    at com.hazelcast.logging.LoggerFactorySupport.getLogger(LoggerFactorySupport.java:38)
    at com.hazelcast.logging.Logger.getLogger(Logger.java:110)
    at com.hazelcast.logging.Logger.getLogger(Logger.java:64)
    at com.hazelcast.instance.HazelcastInstanceFactory.<clinit>(HazelcastInstanceFactory.java:67)
    at com.hazelcast.core.Hazelcast.newHazelcastInstance(Hazelcast.java:91)
    at com.hazelcast.core.server.StartServer.main(StartServer.java:46)
Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Logger
    at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
    ... 10 more
票数 0
EN

Stack Overflow用户

发布于 2020-06-26 07:23:07

log4j自5年前就不再受欢迎,存在安全漏洞,并且可能无法在较新版本的Java上工作。见这里

hazelcast.logging.type指定为log4j向Hazelcast指示在运行时使用它发现的任何Log4j,因为这使您能够选择所需的版本。

因此,您的pom需要构建一个可执行的jar,至少包括Hazelcast Jar和Log4j jar。或者,在运行时将两者都放在类路径上。

对我来说,3.12.5立即失败了

代码语言:javascript
复制
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/log4j/Logger

如果我请求Log4j,但不要在运行时类路径上提供Log4j jar。如果您没有收到这条消息,可能是您指定的配置没有被使用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62588764

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档