Конфигурация Hazelcast log4j выдает ошибку java.lang.NoClassDefFoundError: org/apache/log4j/Logger error

Я пытаюсь настроить ведение журнала Hazelcast log4j в Windows, используя последнюю версию.

Добавил конфиг:

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

Я запускаю следующую команду из папки bin hazelcast:

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

Однако я читал, что вы не можете указать путь к классам и банку в одном выражении. Банки hazelcast не содержат файл jar log4j. Кажется, что они должны быть упакованы.

Может ли кто-нибудь помочь с этим, пожалуйста.


person AndyKing    schedule 20.12.2019    source источник
comment
вы можете попробовать java -cp ..\..\log4j\log4j-1.2.17.jar;..\lib\hazelcast-3.12.2.jar com.hazelcast.core.server.StartServer (не нужно использовать -jar, если вы уже знаете имя основного класса)   -  person Daniele    schedule 20.12.2019
comment
Спасибо за ответ. Пробовал и та же ошибка.   -  person AndyKing    schedule 20.12.2019
comment
Ну, класс org.apache.log4j.Logger содержится в банке log4j, у вас не должно быть ошибки NoClassDefFoundError. Можете ли вы перепроверить правильность имен папок и файлов?   -  person Daniele    schedule 20.12.2019
comment
Вы правы, у меня была проблема с путем. Спасибо за это. Теперь мне просто нужно выяснить, как сообщить log4j, как получить файл конфигурации.   -  person AndyKing    schedule 20.12.2019
comment
Если вы отправите это как ответ, я поставлю галочку   -  person AndyKing    schedule 20.12.2019


Ответы (1)


Чтобы сообщить 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

person Andorkan    schedule 07.07.2020