<?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="ERROR" name="RollingCronTest" monitorInterval="1">
  <Properties>
    <Property name="filename">target/rolling1/rollingtest.log</Property>
    <Property name="DIR">target/rolling-cron-size</Property>
  </Properties>
  <Filters>
    <ThresholdFilter level="debug"/>
  </Filters>

  <Appenders>
    <Console name="STDOUT">
      <PatternLayout pattern="%m%n"/>
    </Console>
    <RollingFile name="RollingFile" fileName="${filename}" filePattern="${DIR}/rollingfile_%d{yyyy-MM-dd-HH-mm-ss}_%i.log">
      <PatternLayout pattern="%d{yyyy-MM-dd-HH-mm-ss} [%level] [%c] %msg%n"/>
      <Policies>
        <CronTriggeringPolicy schedule="* * * * * ?"/>
        <SizeBasedTriggeringPolicy size="1000" />
      </Policies>
    </RollingFile>
    <List name="List">
      <Filters>
        <ThresholdFilter level="error"/>
      </Filters>
    </List>
  </Appenders>

  <Loggers>
    <Logger name="org.apache.logging.log4j.core.appender.rolling" level="debug" additivity="false">
      <AppenderRef ref="RollingFile"/>
    </Logger>

    <Root level="error">
      <AppenderRef ref="STDOUT"/>
    </Root>
  </Loggers>

</Configuration>