<?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" shutdownHook="disable" packages="org.apache.geode.internal.logging.log4j.custom">
    <Properties>
        <Property name="custom-pattern">CUSTOM: level=%level time=%date{yyyy/MM/dd HH:mm:ss.SSS z} message=%message%nthrowable=%throwable%n
        </Property>
    </Properties>
    <Appenders>
        <Console name="STDOUT" target="SYSTEM_OUT">
            <PatternLayout pattern="${custom-pattern}"/>
        </Console>
        <Basic name="CUSTOM">
            <PatternLayout pattern="${custom-pattern}"/>
        </Basic>
    </Appenders>
    <Loggers>
        <Logger name="com.gemstone" level="INFO" additivity="true"/>
        <Logger name="org.apache.geode" level="INFO" additivity="true">
            <filters>
                <MarkerFilter marker="GEODE_VERBOSE" onMatch="DENY" onMismatch="NEUTRAL"/>
            </filters>
        </Logger>
        <Logger name="org.apache.geode.internal.logging.log4j.custom" level="DEBUG" additivity="true"/>
        <Logger name="org.jgroups" level="FATAL" additivity="true"/>
        <Root level="INFO">
            <AppenderRef ref="CUSTOM"/>
            <AppenderRef ref="STDOUT"/>
        </Root>
    </Loggers>
</Configuration>
