<?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">
  <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>
    <Property name="geode-default">true</Property>
  </Properties>
  <Appenders>
    <GeodeConsole name="STDOUT" target="SYSTEM_OUT">
      <PatternLayout pattern="${geode-pattern}"/>
    </GeodeConsole>
    <GeodeLogWriter name="LOGWRITER">
      <PatternLayout pattern="${geode-pattern}"/>
    </GeodeLogWriter>
    <GeodeLogWriter name="SECURITYLOGWRITER" security="true">
      <PatternLayout pattern="${geode-pattern}"/>
    </GeodeLogWriter>
    <GeodeAlert name="ALERT"/>
  </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.security" level="INFO" additivity="false">
      <AppenderRef ref="SECURITYLOGWRITER"/>
    </Logger>
    <Logger name="org.jgroups" level="FATAL" additivity="true"/>
    <Logger name="org.eclipse.jetty" level="FATAL" additivity="true"/>
    <Root level="INFO">
      <AppenderRef ref="STDOUT"/>
      <AppenderRef ref="LOGWRITER"/>
      <AppenderRef ref="ALERT"/>
    </Root>
  </Loggers>
</Configuration>
