<?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" name="XMLConfigTest">
  <Properties>
    <Property name="filename">target/rolling-size-test/rolling.log</Property>
  </Properties>
  <ThresholdFilter level="debug"/>

  <Appenders>
    <RollingFile name="RollingFile" fileName="${filename}"
                 filePattern="target/rolling-size-test/rollingtest-%d{yyyy-MM-DD'T'HH-mm-ss-SSS}.log">
      <PatternLayout>
        <Pattern>%m%n</Pattern>
      </PatternLayout>
      <SizeBasedTriggeringPolicy size="5000" />
      <DefaultRolloverStrategy max="500"/>
    </RollingFile>
  </Appenders>

  <Loggers>

    <Root level="debug">
      <AppenderRef ref="RollingFile"/>
    </Root>
  </Loggers>

</Configuration>