java - 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 ..\lib\hazelcast-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 ..\..\log4j\log4j-1.2.17.jar -jar ..\lib\hazelcast-3.12.2.jar com.hazelcast.core.server.StartServer
但是,我读过您不能在同一语句中指定类路径和 jar。hazelcast 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
推荐阅读
- javascript - 将当前日期添加到 pdf(在浏览器中打开时)
- android - 如何为垂直搜索栏应用垂直进度可绘制
- javascript - cypress 中命令断言失败时如何在重试逻辑中添加延迟
- r - 根据时间步长对数据进行排序?
- c++ - CMake连接到数组中的每个字符串
- python - Mysqlhook.get_records 将布尔值保存为 b'\00' 和 b'\01' 值,而我需要 tinyint 格式
- c++ - 如何从 QT 的辅助窗口中的 MainWindow 调用函数?
- ios - 关于证书的 Xamarin 推送通知问题
- java - 如何防止TextView被截断
- php - 在php中获取多页表中的表单输入数据