<?xml version="1.0"?>
<!--
  ~ 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 debug="true">

    <contextName>qpid-test-utils</contextName>

    <appender name="RootSiftAppender" class="ch.qos.logback.classic.sift.SiftingAppender">
        <discriminator class="org.apache.qpid.test.utils.LogbackPropertyValueDiscriminator">
            <Key>classQualifiedTestName</Key>
            <DefaultValue>testrun</DefaultValue>
        </discriminator>
        <sift>
            <appender name="FILE-${classQualifiedTestName}" class="ch.qos.logback.core.FileAppender">
                <File>${test.output.dir:-target${file.separator}surefire-reports}${file.separator}TEST-${classQualifiedTestName}.txt</File>
                <Append>False</Append>
                <encoder>
                    <pattern>%date %-5level [%thread] %logger{10} %msg%n</pattern>
                </encoder>
            </appender>
        </sift>
    </appender>
    <logger name="org.eclipse.jetty" level="warn" />
    <root level="debug">
        <appender-ref ref="RootSiftAppender"/>
    </root>
    <shutdownHook class="ch.qos.logback.core.hook.DelayingShutdownHook"/>
</configuration>
