<?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>
    <Properties>
        <property name="FILE_PATH" value="./logs/provider-java-chassis"/>
    </Properties>

    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d [%p][%t][%c:%L] %m%n"/>
        </Console>

        <RollingFile name="AccessLog" fileName="${FILE_PATH}/access.log"
          filePattern="${FILE_PATH}/access-%d{yyyy-MM-dd}_%i.log.gz">
            <PatternLayout pattern="%d [%t] %m%n"/>
            <Policies>
                <SizeBasedTriggeringPolicy size="20MB"/>
            </Policies>
            <DefaultRolloverStrategy max="100"/>
        </RollingFile>

        <RollingFile name="MetricsLog" fileName="${FILE_PATH}/metrics.log"
          filePattern="${FILE_PATH}/metrics-%d{yyyy-MM-dd}_%i.log.gz">
            <PatternLayout pattern="%d [%t] %m%n"/>
            <Policies>
                <SizeBasedTriggeringPolicy size="20MB"/>
            </Policies>
            <DefaultRolloverStrategy max="100"/>
        </RollingFile>

        <RollingFile name="SlowLog" fileName="${FILE_PATH}/slow.log"
          filePattern="${FILE_PATH}/slow-%d{yyyy-MM-dd}_%i.log.gz">
            <PatternLayout pattern="%d [%t] %m%n"/>
            <Policies>
                <SizeBasedTriggeringPolicy size="20MB"/>
            </Policies>
            <DefaultRolloverStrategy max="100"/>
        </RollingFile>
    </Appenders>

    <Loggers>
        <AsyncLogger name="scb-access" level="INFO" additivity="false">
            <AppenderRef ref="AccessLog"/>
        </AsyncLogger>
        <AsyncLogger name="scb-metrics" level="INFO" additivity="false">
            <AppenderRef ref="MetricsLog"/>
        </AsyncLogger>
        <AsyncLogger name="scb-slow" level="INFO" additivity="false">
            <AppenderRef ref="SlowLog"/>
        </AsyncLogger>

        <Root level="INFO">
            <AppenderRef ref="Console"/>
        </Root>
    </Loggers>
</Configuration>
