<?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.

-->
<!--
 Logging settings for the Drill-on-YARN client application. Not that the
 client does not do much logging, it relies on the -v (verbose) option
 instead.
 See http://logback.qos.ch/manual/index.html for more information.
-->
<configuration>

  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
      </pattern>
    </encoder>
  </appender>

  <!-- All Drill-on-YARN code is under the org.apache.drill.yarn package. -->
  <logger name="org.apache.drill.yarn" additivity="false">
    <level value="error" />
    <appender-ref ref="STDOUT" />
  </logger>

  <root>
    <level value="error" />
    <appender-ref ref="STDOUT" />
  </root>

</configuration>
