<!--
  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>

  <appender name="FILE" class="ch.qos.logback.core.FileAppender">
    <file>perftest.log</file>
    <append>false</append>
    <encoder>
      <Pattern>%d %p %c{1} [%t] %X{aKey} %m %ex%n</Pattern>
      <immediateFlush>false</immediateFlush>
    </encoder>
  </appender>
  <appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender">
    <queueSize>262144</queueSize>
    <discardingThreshold>0</discardingThreshold>
    <includeCallerData>false</includeCallerData>
    <appender-ref ref="FILE" />
  </appender>

  <root level="debug">
    <appender-ref ref="ASYNC" />
  </root>
</configuration>
