Configuring Logging | Ignite Documentation

Ignite Summit 2024 — Call For Speakers Now Open — Learn more

Edit

Configuring Logging

Overview

Ignite supports a number of logging libraries and frameworks:

  • JUL (default),

  • Log4j2,

  • JCL,

  • SLF4J.

This section shows you how to set up the logger.

When a node starts, it outputs start-up information to the console, including the information about the configured logging library. Each logging library has its own configuration parameters and should be set up according to its official documentation. Besides library-specific configuration, there is a number of system properties that allow you to tune logging. These properties are presented in the following table.

System Property Description Default Value

IGNITE_LOG_INSTANCE_NAME

If the property is set, Ignite includes its instance name in log messages.

Not set

IGNITE_QUIET

Set to false to disable the quiet mode and enable the verbose mode. In the verbose mode, the node logs a lot more information.

true

IGNITE_LOG_DIR

The directory where Ignite writes log files.

$IGNITE_HOME/ work/log

IGNITE_DUMP_THREADS_ON_FAILURE

Set to true to output thread dumps to the log when a critical error is caught.

true

Default Logging

By default, Ignite uses the java.util.logging (JUL) framework. If you start Ignite using the ignite.sh|bat script from the distribution package, Ignite uses $IGNITE_HOME/config/java.util.logging.properties as the default logging configuration file and outputs all messages to log files in the $IGNITE_HOME/work/log directory. You can override the default logging directory by specifying the IGNITE_LOG_DIR system property.

If you use Ignite as a library in your application, the default logging configuration includes only console handler at INFO level. You can provide a custom configuration file via the java.util.logging.config.file system property.

Using Log4j2

Note
Before using Log4j2, enable the ignite-log4j2 module.

To enable Log4j2 logger, set the gridLogger property of IgniteConfiguration, as shown below:

<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>
Unresolved directive in logging.adoc - include::{javaFile}[tag=log4j2, indent=0]
This API is not presently available for .NET. You can use XML configuration.
This API is not presently available for C++. You can use XML configuration.

In the above example, the path to log4j2-config.xml can be either an absolute path, a local path relative to META-INF in classpath or to IGNITE_HOME. An example log4j2 configuration file can be found in the distribution package ($IGNITE_HOME/config/ignite-log4j.xml).

Note
Log4j2 supports runtime reconfiguration, i.e. changes in the configuration file is applied without the need to restart the application.
Note
log4j2-config.xml enables colorization of console output by default. This feature works out of the box on many operating systems, except for Windows. If you want to enable this feature on Windows, please follow the official log4j2 instructions.

Using JCL

Note
Before using JCL, enable the ignite-jcl module.
Note
Note that JCL simply forwards logging messages to an underlying logging system, which needs to be properly configured. Refer to the JCL official documentation for more information. For example, if you want to use Log4j2, make sure you add the required libraries to your classpath.

To enable Log4j2 logger, set the gridLogger property of IgniteConfiguration, as shown below:

<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>
Unresolved directive in logging.adoc - include::{javaFile}[tag=jcl, indent=0]
This API is not presently available for .NET. You can use XML configuration.
This API is not presently available for C++. You can use XML configuration.

Using SLF4J

Note
Before using SLF4J, enable the ignite-slf4j module.

To enable the SLF4J logger, set the gridLogger property of IgniteConfiguration, as shown below:

<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>
Unresolved directive in logging.adoc - include::{javaFile}[tag=slf4j, indent=0]
This API is not presently available for .NET. You can use XML configuration.
This API is not presently available for C++. You can use XML configuration.

Refer to the SLF4J user manual for more information.

Suppressing Sensitive Information

Logs can include the content of cache entries, system properties, startup options, etc. In some cases, those can contain sensitive information. You can prevent such information from being written to the log by setting the IGNITE_TO_STRING_INCLUDE_SENSITIVE system property to false.

./ignite.sh -J-DIGNITE_TO_STRING_INCLUDE_SENSITIVE=false

See Setting JVM Options to learn about different ways to set system properties.

Logging Configuration Example

The following steps guide you through the process of configuring logging. This should be suitable for most cases.

  1. To enable Log4j2, follow the instructions provided in the corresponding section above.

  2. If you use the default configuration file (ignite-log4j.xml), uncomment the CONSOLE appender.

  3. In the log4j2 configuration file, set the path to the log file. The default location is ${IGNITE_HOME}/work/log/ignite.log.

  4. Start the nodes in verbose mode:

    • If you use ignite.sh to start nodes, specify the -v option.

    • If you start nodes from Java code, use the IGNITE_QUIET=false system variable.