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

  <!-- Uncomment the lines below (and <appender-ref ref="SOCKET"/> inside <root>)
       to be able to use Lilith for viewing log events -->
  <!--
  <appender name="SOCKET" class="de.huxhorn.lilith.logback.appender.ClassicMultiplexSocketAppender">
    <Compressing>true</Compressing>
    <ReconnectionDelay>10000</ReconnectionDelay>
    <IncludeCallerData>true</IncludeCallerData>
    <RemoteHosts>${LILITH_HOSTNAME:-localhost}</RemoteHosts>
  </appender>

  <logger name="org.apache.drill" additivity="false">
    <level value="debug"/>
    <appender-ref ref="SOCKET"/>
  </logger>

  <logger name="query.logger" additivity="false">
    <level value="info"/>
    <appender-ref ref="SOCKET"/>
  </logger>
  -->
  
  <statusListener class="ch.qos.logback.core.status.NopStatusListener"/>

  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <!-- encoders are assigned the type
         ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
    <encoder>
      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
  </appender>

  <root>
    <level value="INFO"/>
    <!-- Uncomment the next line (and the lines above) to be able to use Lilith for viewing log events -->
    <!-- <appender-ref ref="SOCKET"/>-->
    <appender-ref ref="STDOUT"/>
  </root>

</configuration>
