Логирование событий#
Для логирования событий DataGrid поддерживает следующие библиотеки и фреймворки:
JUL (используется по умолчанию);
Log4j2;
JCL;
SLF4J.
При запуске узла, он выводит в консоль начальную информацию, в том числе информацию о сконфигурированной библиотеке логирования. Каждая библиотека логирования имеет собственные параметры конфигурации и должна настраиваться согласно официальной документации этой библиотеки. Помимо собственных параметров конфигурации для каждой отдельной библиотеки, существуют следующие параметры, которые позволяют дополнительно настроить логирование:
Системное свойство |
Описание |
Значение по умолчанию |
|---|---|---|
|
Если данное свойство имеет значение |
Не задано |
|
При значении |
|
|
Директория для записи log-файлов Datagrid |
|
|
При значении |
|
Логирование по умолчанию#
По умолчанию DataGrid использует фреймворк java.util.logging (JUL). Если DataGrid запускается с использованием скрипта ignite.sh|bat из дистрибутива, то по умолчанию в качестве файла конфигурации используется $IGNITE_HOME/config/java.util.logging.properties, выдающий все сообщения в log-файлах в директории $IGNITE_HOME/work/log. Директория, используемая по умолчанию, может быть изменена при помощи системного свойства IGNITE_LOG_DIR.
При использовании DataGrid в приложении в качестве библиотеки, конфигурация логирования, используемая по умолчанию, включает в себя только обработчик консоли на уровне INFO. Собственный файл конфигурации можно использовать, изменив системное свойство java.util.logging.config.file.
Log4j2#
Внимание!
Чтобы использовать Log4j2, необходимо подключить модуль ignite-log4j2.
Для включения Log4j2, сконфигурируйте свойство gridLogger класса IgniteConfiguration:
XML
<bean class="org.apache.ignite.configuration.IgniteConfiguration" id="ignite.cfg"> <property name="gridLogger"> <bean class="org.apache.ignite.logger.log4j2.Log4J2Logger"> <!-- log4j2 configuration file --> <constructor-arg type="java.lang.String" value="log4j2-config.xml"/> </bean> </property> <!-- other properties --> </bean>Java
IgniteConfiguration cfg = new IgniteConfiguration(); IgniteLogger log = new Log4J2Logger("log4j2-config.xml"); cfg.setGridLogger(log); // Start a node. try (Ignite ignite = Ignition.start(cfg)) { ignite.log().info("Info Message Logged!"); }
Путь к log4j2-config.xml может быть как абсолютным, так и локальным относительным путем к META-INF в classpath или к IGNITE_HOME. Пример файла конфигурации log4j2 можно найти в дистрибутиве ($IGNITE_HOME/config/ignite-log4j2.xml).
Примечание
Log4j2 поддерживает изменение конфигурации в ходе работы. Таким образом, изменения в файле конфигурации применяются без необходимости перезапуска приложения.
JCL#
Внимание!
Чтобы использовать Log4j2, необходимо подключить модуль ignite-jcl.
JCL лишь пересылает log-сообщения в соответствующую систему логирования, которая должна быть настроена должным образом. Например, для использования Log4j2, убедитесь, что необходимые библиотеки добавлены в свой classpath.
Подробнее — смотри официальную документацию JCL.
Для включения JCL, сконфигурируйте свойство gridLogger класса IgniteConfiguration:
XML
<bean class="org.apache.ignite.configuration.IgniteConfiguration" id="ignite.cfg"> <property name="gridLogger"> <bean class="org.apache.ignite.logger.jcl.JclLogger"> </bean> </property> <!-- other properties --> </bean>Java
IgniteConfiguration cfg = new IgniteConfiguration(); cfg.setGridLogger(new JclLogger()); // Start a node. try (Ignite ignite = Ignition.start(cfg)) { ignite.log().info("Info Message Logged!"); }
SLF4J#
Внимание!
Чтобы использовать Log4j2, необходимо подключить модуль ignite-slf4j.
Для включения SLF4J, сконфигурируйте свойство gridLogger класса IgniteConfiguration:
XML
<bean class="org.apache.ignite.configuration.IgniteConfiguration" id="ignite.cfg"> <property name="gridLogger"> <bean class="org.apache.ignite.logger.slf4j.Slf4jLogger"> </bean> </property> <!-- other properties --> </bean>Java
IgniteConfiguration cfg = new IgniteConfiguration(); cfg.setGridLogger(new Slf4jLogger()); // Start a node. try (Ignite ignite = Ignition.start(cfg)) { ignite.log().info("Info Message Logged!"); }
Подробнее — смотри официальную документацию SLF4J.
Скрытие конфиденциальной информации в логах#
В логах может отражаться содержание кеш-записей, системных свойств, настроек запуска и прочая информация, которая в некоторых случаях может быть конфиденциальной. Отображение такой информации в логах можно отключить, установив значение системного свойства IGNITE_TO_STRING_INCLUDE_SENSITIVE = false.
Пример команды:
./ignite.sh -J-DIGNITE_TO_STRING_INCLUDE_SENSITIVE=false`
Подробнее — смотри официальную документацию Apache Ignite.
Пример конфигурации логирования#
Для конфигурации логирования выполните шаги:
Включите Log4j2, как описано в разделе Log4j2.
При использовании стандартного файла конфигурации (
ignite-log4j2.xml) раскомментируйте аппендерCONSOLE.В файле конфигурации log4j2 укажите путь к log-файлу. По умолчанию log-файлы сохраняются в директорию
${IGNITE_HOME}/work/log/ignite.log.Запустите узлы в verbose-режиме:
при использовании утилиты
ignite.shдля запуска узлов — добавьте ключ-v;если запуск узлов производится из Java-кода — используйте системную переменную
IGNITE_QUIET=false.