GridException Не удалось добавить неоперативный регистратор для Log4j при запуске GridGain
У меня проблемы с началом работы с gridgain, я использую файл конфигурации xml, который поставляется с примерами gridgain example-cache.xml (есть более простой файл конфигурации?). Когда я начинаю gridgain следующим образом, я получил GridException
:
public static void main(String[] args) throws GridException, URISyntaxException {
URL url = GridgainCache.class.getClassLoader().getResource("gridgain.xml");
String filename = url.toURI().toString();
System.out.println("Reading gridgain conf from: "+filename);
Grid g = GridGain.start(filename);
...
}
Вот полная трассировка стека:
Exception in thread "main" class org.gridgain.grid.GridException: Failed to add no-op logger for Log4j.
For more information see:
Troubleshooting: http://bit.ly/GridGain-Troubleshooting
Documentation Center: http://bit.ly/GridGain-Documentation
at org.gridgain.grid.util.GridUtils.addLog4jNoOpLogger(GridUtils.java:7709)
at org.gridgain.grid.kernal.GridGainEx.start(GridGainEx.java:714)
at org.gridgain.grid.kernal.GridGainEx.start(GridGainEx.java:659)
at org.gridgain.grid.kernal.GridGainEx.start(GridGainEx.java:522)
at org.gridgain.grid.kernal.GridGainEx.start(GridGainEx.java:492)
at org.gridgain.grid.GridGain.start(GridGain.java:314)
at com.examples.gridgain.GridgainCache.main(GridgainCache.java:102)
Caused by: java.lang.IllegalArgumentException: argument type mismatch
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.gridgain.grid.util.GridUtils.addLog4jNoOpLogger(GridUtils.java:7706)
... 6 more
Нужно ли настраивать log4j? Я использую slf4j.
1 ответ
GridGain проверяет, есть ли классы Log4j, доступные в classpath, и пытается автоматически добавить Log4j logger, что в вашем случае приводит к ошибке из-за несоответствия версии Log4j.
Поскольку вы не можете переключиться на Log4j v1.2.17, поддерживаемый GridGain, вам следует настроить другой регистратор вручную. Я бы использовал мост SLF4j, соответствующий уже имеющейся версии Log4j (обратите внимание, что вам нужно будет добавить зависимость gridgain-slf4j):
<property name="gridLogger">
<bean class="org.gridgain.grid.logger.slf4j.GridSlf4jLogger"/>
</property>
Другой вариант - использовать ведение журнала Java (дополнительные зависимости не требуются)
<property name="gridLogger">
<bean class="org.gridgain.grid.logger.java.GridJavaLogger"/>
</property>