<?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 status="warn" monitorInterval="10">
    <Properties>
        <Property name="bookkeeper.cli.log.dir">.</Property>
        <Property name="bookkeeper.cli.log.file">bookkeeper-server.log</Property>
        <Property name="bookkeeper.cli.log.root.level">INFO</Property>
        <Property name="bookkeeper.cli.log.root.appender">CONSOLE</Property>
    </Properties>
    <Appenders>
        <Console name="CONSOLE" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{ABSOLUTE} %-5p %m%n"/>
        </Console>
        <Console name="VERBOSECONSOLE" target="SYSTEM_OUT">
            <PatternLayout pattern="%m%n"/>
        </Console>
        <RollingFile name="ROLLINGFILE" fileName="${sys:bookkeeper.cli.log.dir}/${sys:bookkeeper.cli.log.file}" filePattern="${sys:bookkeeper.cli.log.dir}/${sys:bookkeeper.cli.log.file}%d{.yyyy-MM-dd}">
            <PatternLayout pattern="%d{ISO8601} - %-5p - [%t:%C{1}@%L] - %m%n"/>
            <Policies>
                <TimeBasedTriggeringPolicy modulate="true"/>
            </Policies>
            <DefaultRolloverStrategy max="100"/>
        </RollingFile>
    </Appenders>
    <Loggers>
        <Root level="${sys:bookkeeper.cli.log.root.level}">
            <AppenderRef ref="${sys:bookkeeper.cli.log.root.appender}"/>
        </Root>
        <Logger name="org.apache.zookeeper" level="ERROR"/>
        <Logger name="verbose" level="INFO">
            <AppenderRef ref="VERBOSECONSOLE"/>
        </Logger>
    </Loggers>
</Configuration>
