Hazelcast log4j 配置产生"java.lang.NoClassDefFoundError: org/apache/log4j/Logger"错误



我正在尝试使用最新版本在Windows上设置Hazelcast log4j日志记录。

我添加了配置:

<properties>
<property name="hazelcast.logging.type">log4j</property>
</properties>

我从 hazelcast bin 文件夹中运行以下命令:

java -jar ..libhazelcast-3.12.2.jar com.hazelcast.core.server.StartServer

这将产生以下错误:

Dec 20, 2019 8:44:56 AM com.hazelcast.config.AbstractConfigLocator
INFO: Loading 'hazelcast.xml' from the working directory.
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)
...
Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Logger
at java.net.URLClassLoader.findClass(Unknown Source)
...

我看到 Hazelcast 需要 log4j 版本 1.2.17,所以我从 maven 下载了它并将其放在一个文件夹中。然后我运行了以下内容:

java -cp ....log4jlog4j-1.2.17.jar -jar ..libhazelcast-3.12.2.jar com.hazelcast.core.server.StartServer

但是,我已经读到您不能在同一语句中指定类路径和 jar。榛子罐不包含 log4j jar 文件。似乎它们应该在包装时。

任何人都可以帮忙吗?

为了告诉 log4j 如何获取配置文件,您必须在配置文件中添加以下行:

<property name="log4j2.configuration">/path/to/properties/log4j2.properties</property>

所以它看起来像这样:

<properties>
<property name="hazelcast.logging.type">log4j</property>
<property name="log4j2.configuration">/path/to/properties/log4j2.properties</property>
</properties>

然后,您必须编辑 log4j2.properties 文件,如文档中所述:https://docs.hazelcast.org/docs/latest/manual/html-single/index.html#logging-configuration

最新更新