<?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 name="FileAppenderThrowableBenchmark" status="error">
    <Appenders>
        <RandomAccessFile name="RAFExtendedException" fileName="target/extended-exception.log" immediateFlush="false">
            <PatternLayout>
                <Pattern>%m%xEx</Pattern>
            </PatternLayout>
        </RandomAccessFile>
        <RandomAccessFile name="RAFSimpleException" fileName="target/simple-exception.log" immediateFlush="false">
            <PatternLayout>
                <Pattern>%m%ex</Pattern>
            </PatternLayout>
        </RandomAccessFile>
    </Appenders>
    <Loggers>
        <Logger name="RAFExtendedException" level="debug" additivity="false">
            <AppenderRef ref="RAFExtendedException"/>
        </Logger>
        <AsyncLogger name="async.RAFExtendedException" level="debug" additivity="false">
            <AppenderRef ref="RAFExtendedException"/>
        </AsyncLogger>
        <Logger name="RAFSimpleException" level="debug" additivity="false">
            <AppenderRef ref="RAFSimpleException"/>
        </Logger>
        <AsyncLogger name="async.RAFSimpleException" level="debug" additivity="false">
            <AppenderRef ref="RAFSimpleException"/>
        </AsyncLogger>
    </Loggers>
</Configuration>