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

-->
<configuration>

    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d [%t] %-5p %c{30} %m [%X]%n</pattern>
        </encoder>
    </appender>

    <appender name="LOGFILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <File>../logs/airavata.log</File>
        <Append>true</Append>
        <encoder>
            <pattern>%d [%t] %-5p %c{30} %m [%X]%n</pattern>
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>../logs/airavata.log.%d{yyyy-MM-dd}</fileNamePattern>
            <maxHistory>30</maxHistory>
            <totalSizeCap>1GB</totalSizeCap>
        </rollingPolicy>
    </appender>

    <logger name="ch.qos.logback" level="WARN"/>
    <logger name="org.apache.helix" level="WARN"/>
    <logger name="org.apache.zookeeper" level="ERROR"/>
    <logger name="org.apache.airavata" level="INFO"/>
    <logger name="org.hibernate" level="ERROR"/>
    <logger name="net.schmizz.sshj" level="WARN"/>
    <root level="INFO">
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="LOGFILE"/>
    </root>
</configuration>
