<?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 scan="false">
    <appender name="FILE" class="ch.qos.logback.core.FileAppender">
        <file>target/test-data/jclouds.log</file>

        <encoder>
            <Pattern>%d %-5p [%c] [%thread] %m%n</Pattern>
        </encoder>
    </appender>

    <appender name="WIREFILE" class="ch.qos.logback.core.FileAppender">
        <file>target/test-data/jclouds-wire.log</file>

        <encoder>
            <Pattern>%d %-5p [%c] [%thread] %m%n</Pattern>
        </encoder>
    </appender>

    <root>
        <level value="warn" />
    </root>

    <logger name="org.jclouds">
        <level value="DEBUG" />
        <appender-ref ref="FILE" />
    </logger>

    <logger name="jclouds.wire">
        <level value="DEBUG" />
        <appender-ref ref="WIREFILE" />
    </logger>

    <logger name="jclouds.headers">
        <level value="DEBUG" />
        <appender-ref ref="WIREFILE" />
    </logger>

</configuration>
