<?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="OFF">

  <Appenders>
    <Console name="STDOUT">
      <PatternLayout pattern="%C{1.} %m %level MDC%X%n"/>
    </Console>
    <Jpa name="H2Appender" persistenceUnitName="h2JpaAppenderTestUnit"
         entityClassName="org.apache.logging.log4j.perf.jmh.jpa.TestBasicEntity" ignoreExceptions="false" />
    <Jpa name="HSQLDBAppender" persistenceUnitName="hyperSqlJpaAppenderTestUnit"
         entityClassName="org.apache.logging.log4j.perf.jmh.jpa.TestBasicEntity" ignoreExceptions="false" />
  </Appenders>

  <Loggers>
    <Logger name="H2Logger" level="debug" additivity="false">
      <AppenderRef ref="H2Appender" />
    </Logger>
    <Logger name="HSQLDBLogger" level="debug" additivity="false">
      <AppenderRef ref="HSQLDBAppender" />
    </Logger>

    <Root level="fatal">
      <AppenderRef ref="STDOUT"/>
    </Root>
  </Loggers>

</Configuration>
