<?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">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">

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

        <!-- Log from ERROR and higher (change to WARN if needed). -->
        <param name="Threshold" value="ERROR"/>

        <!-- The default pattern: Date Priority [Category] Message\n -->
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="[%d{ISO8601}][%-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
    -->
    <appender name="FILE" class="org.apache.ignite.logger.log4j.Log4jRollingFileAppender">
        <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>

    <!--
    <category name="org.apache.ignite">
        <level value="DEBUG"/>
    </category>
    -->

    <!--
        Uncomment to disable courtesy notices, such as SPI configuration
        consistency warnings.
    -->
    <!--
    <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="WARN"/>
    </category>

    <!--
        Avoid warnings about failed bind attempt when multiple nodes running on the same host.
    -->
    <category name="org.eclipse.jetty.util.log">
        <level value="ERROR"/>
    </category>

    <category name="org.eclipse.jetty.util.component">
        <level value="ERROR"/>
    </category>

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

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

        <!-- Uncomment to enable logging to console. -->
        <!--
        <appender-ref ref="CONSOLE"/>
        -->

        <appender-ref ref="CONSOLE_ERR"/>
        <appender-ref ref="FILE"/>
    </root>
</log4j:configuration>
