<?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 status="WARN">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{ISO8601} %p [%t] %c - %m%n"/>
        </Console>
    </Appenders>
    <Loggers>
        <Root level="info">
            <AppenderRef ref="Console"/>
        </Root>
        <Logger level="warn" name="org.apache.spark" additivity="false">
            <AppenderRef ref="Console"/>
        </Logger>
        <!-- Suppress allocation warning during local tests -->
        <Logger level="error" name="org.apache.druid.java.util.common.io.NativeIO" additivity="false">
            <AppenderRef ref="Console"/>
        </Logger>
        <!-- Suppressing Reference Counter warnings during local tests -->
        <Logger level="error" name="org.apache.druid.collections.StupidPool" additivity="false">
            <AppenderRef ref="Console"/>
        </Logger>
        <!-- Suppressing default registration methods during local tests -->
        <Logger level="warn" name="org.apache.druid.spark.registries.ComplexTypeRegistry" additivity="false">
            <AppenderRef ref="Console"/>
        </Logger>
    </Loggers>
</Configuration>
