<?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>
    <property name="log.context.name" value="elastic-job-common-core-test" />
    <property name="log.charset" value="UTF-8" />
    <property name="log.pattern" value="[%-5level] %date --%thread-- [%logger] %msg %n" />
    
    <contextName>${log.context.name}</contextName>
    
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>ERROR</level>
        </filter>
        <encoder charset="${log.charset}">
            <pattern>${log.pattern}</pattern>
        </encoder>
    </appender>
    
    <root>
        <appender-ref ref="STDOUT" />
    </root>
    
    <logger name="org.apache.shardingsphere.elasticjob.cloud.event.rdb.JobEventRdbConfiguration" level="OFF" />
    <logger name="org.apache.shardingsphere.elasticjob.cloud.event.JobEventBus" level="OFF" />
    <logger name="org.apache.shardingsphere.elasticjob.cloud.executor.handler.impl.DefaultJobExceptionHandler" level="OFF" />
    <logger name="org.apache.curator.framework.recipes.leader.LeaderSelector" level="OFF" />
</configuration>
