<?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">
    <Properties>
        <Property name="geode-pattern">[%level{lowerCase=true} %date{yyyy/MM/dd HH:mm:ss.SSS z} &lt;%thread&gt; tid=%hexTid] %message%n%throwable%n</Property>
    </Properties>
    <Appenders>
        <GeodeConsole name="STDOUT" target="SYSTEM_OUT">
            <PatternLayout pattern="${geode-pattern}"/>
        </GeodeConsole>
    </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.jgroups" level="FATAL" additivity="true"/>
        <Logger name="org.eclipse.jetty" level="FATAL" additivity="true"/>
        <Root level="INFO">
            <AppenderRef ref="STDOUT"/>
        </Root>
    </Loggers>
</Configuration>
