<?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="INFO" 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>
        <List name="CUSTOM"/>
    </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>
