<?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="DEBUG">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout>
                <LevelPatternSelector defaultPattern="%d %c %L [%t] %-5p %x - %m%n">
                    <PatternMatch key="ERROR" pattern="%d %c %L [%t] %-5p %x - [%swversion] %m%n" />
                </LevelPatternSelector>
            </PatternLayout>
        </Console>
    </Appenders>
    <Loggers>
        <logger name="org.apache.zookeeper" level="INFO"/>
        <logger name="io.grpc.netty" level="INFO"/>
        <logger name="io.netty" level="INFO"/>
        <logger name="org.apache.http" level="INFO"/>
        <logger name="org.apache.skywalking.oap.server.core" level="DEBUG"/>
        <logger name="org.apache.skywalking.oap.server.core.storage.PersistenceTimer" level="INFO"/>
        <logger name="org.apache.skywalking.oap.server.core.analysis.worker" level="DEBUG" />
        <logger name="org.apache.skywalking.oap.server.core.remote.client" level="DEBUG"/>
        <logger name="org.apache.skywalking.oap.server.library.buffer" level="INFO"/>
        <logger name="org.apache.skywalking.oap.server.receiver.envoy.MetricServiceGRPCHandler" level="INFO"/>
        <logger name="org.apache.skywalking.oap.meter.analyzer.prometheus.PrometheusMetricConverter" level="INFO"/>
        <logger name="org.apache.skywalking.library.elasticsearch" level="DEBUG"/>
        <Root level="DEBUG">
            <AppenderRef ref="Console"/>
        </Root>
    </Loggers>
</Configuration>
