<?xml version="1.0" encoding="UTF-8"?>

<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->

<!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN"
    "http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd">
<!--
    Default log4j configuration for Ignite.
-->
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">
    <!--
        Logs System.out messages to console.
    -->
    <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
        <!-- Log to STDOUT. -->
        <param name="Target" value="System.out"/>

        <!-- Log from DEBUG and higher. -->
        <param name="Threshold" value="DEBUG"/>

        <!-- The default pattern: Date Priority [Category] Message\n -->
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="[%d{dd-MM-yyyy HH:mm:ss}][%-5p][%t][%c{1}] %m%n"/>
        </layout>

        <!-- Do not log beyond INFO level. -->
        <filter class="org.apache.log4j.varia.LevelRangeFilter">
            <param name="levelMin" value="DEBUG"/>
            <param name="levelMax" value="INFO"/>
        </filter>
    </appender>

    <!--
        Logs all System.err messages to console.
    -->
    <appender name="CONSOLE_ERR" class="org.apache.log4j.ConsoleAppender">
        <!-- Log to STDERR. -->
        <param name="Target" value="System.err"/>

        <!-- Log from WARN and higher. -->
        <param name="Threshold" value="WARN"/>

        <!-- The default pattern: Date Priority [Category] Message\n -->
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="[%d{dd-MMM-yyyy HH:mm:ss}][%-5p][%t][%c{1}] %m%n"/>
        </layout>
    </appender>

    <!--
        Logs all output to specified file.
        By default, the logging goes to IGNITE_HOME/work/log folder

        Note, this appender is disabled by default.
        To enable, uncomment the section below and also FILE appender in the <root> element.
    -->
    <appender name="FILE" class="org.apache.log4j.RollingFileAppender">
        <param name="Threshold" value="DEBUG"/>
        <param name="File" value="${IGNITE_HOME}/work/log/ignite.log"/>
        <param name="Append" value="true"/>
        <param name="MaxFileSize" value="10MB"/>
        <param name="MaxBackupIndex" value="10"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="[%d{ISO8601}][%-5p][%t][%c{1}] %m%n"/>
        </layout>
    </appender>

    <!--
        Uncomment to enable Ignite debugging.
    -->
    <!--
    <category name="org.apache.ignite">
        <level value="DEBUG"/>
    </category>
    -->

    <!--
        Uncomment this category to enable cache
        query execution tracing.
    -->
    <!--
    <category name="org.apache.ignite.cache.queries">
        <level value="DEBUG"/>
    </category>
    -->

    <!--
        Uncomment to enable DGC tracing.
    -->
    <!--
    <category name="org.apache.ignite.grid.kernal.processors.cache.GridCacheDgcManager.trace">
        <level value="DEBUG"/>
    </category>
    -->

    <!--
        Uncomment to disable courtesy notice.
    -->
    <!--
    <category name="org.apache.ignite.CourtesyConfigNotice">
        <level value="OFF"/>
    </category>
    -->

    <category name="org.springframework">
        <level value="WARN"/>
    </category>

    <category name="org.eclipse.jetty">
        <level value="FATAL"/>
    </category>

    <category name="com.amazonaws">
        <level value="WARN"/>
    </category>

    <!-- Default settings. -->
    <root>
        <!-- Print out all info by default. -->
        <level value="INFO"/>

        <!-- Append to console. -->
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="CONSOLE_ERR"/>

        <!-- Uncomment to enable logging to a file. -->
        <appender-ref ref="FILE"/>
    </root>
</log4j:configuration>
