我使用下面的链接跟踪了支持log4j的hazelcast文档:
https://docs.hazelcast.org/docs/latest/manual/html-single/#logging-configuration
但即使这样做了,我也无法得到黑兹尔卡斯特原木。
查询:
发布于 2020-06-26 07:20:54
在您共享的Hazelcast参考手册部分中有一条注释。它解释了这个问题:
如果选择使用
log4j、log4j2或slf4j,则应在类路径中包含适当的依赖项。
意思是,是的。如果您使用与java.util.logging不同的日志记录框架,那么您必须自己提供实现。
如果不提供适当的实现,节点将无法启动:
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发布于 2020-06-26 07:23:07
log4j自5年前就不再受欢迎,存在安全漏洞,并且可能无法在较新版本的Java上工作。见这里。
将hazelcast.logging.type指定为log4j向Hazelcast指示在运行时使用它发现的任何Log4j,因为这使您能够选择所需的版本。
因此,您的pom需要构建一个可执行的jar,至少包括Hazelcast Jar和Log4j jar。或者,在运行时将两者都放在类路径上。
对我来说,3.12.5立即失败了
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/log4j/Logger如果我请求Log4j,但不要在运行时类路径上提供Log4j jar。如果您没有收到这条消息,可能是您指定的配置没有被使用。
https://stackoverflow.com/questions/62588764
复制相似问题