<?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
  
       https://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"
    strict="true"
    name="jdoriConfig">
  
  <Properties>
    <Property name="tckFilename">tck.txt</Property>
    <Property name="dnFilename">datanucleus.txt</Property>
  </Properties>
  
  <Appenders>
    <Appender type="File" name="TCK" fileName="${tckFilename}">
      <Layout type="PatternLayout" pattern="%d{HH:mm:ss,SSS} (%t) %-5p [%c] - %m%n"/>
    </Appender>
    <Appender type="File" name="DataNucleus" fileName="${dnFilename}">
      <Layout type="PatternLayout" pattern="%d{HH:mm:ss,SSS} (%t) %-5p [%c] - %m%n"/>
    </Appender>
  </Appenders>
  
  <Loggers>
    
    <!-- TCK Loggers -->

    <Logger name="org.apache.jdo.tck" level="info" additivity="false">
      <AppenderRef ref="TCK"/>
    </Logger>
    <Logger name="org.springframework" level="error" additivity="false">
      <AppenderRef ref="TCK"/>
    </Logger>
    <Logger name="org.apache.jdo.tck.pc.company.CompanyModelReader" level="error" additivity="false">
      <AppenderRef ref="TCK"/>
    </Logger>
    <Logger name="org.apache.jdo.tck.pc.mylib.MylibReader" level="error" additivity="false">
      <AppenderRef ref="TCK"/>
    </Logger>
     
     <!-- DataNucleus Loggers -->

    <Logger name="DataNucleus" level="warn" additivity="false">
       <AppenderRef ref="DataNucleus"/>
    </Logger>
    
    <!--
    <Logger name="DataNucleus.Persistence" level="info" additivity="false">
       <AppenderRef ref="DataNucleus"/>
     </Logger>
     <Logger name="DataNucleus.Transaction" level="info" additivity="false">
       <AppenderRef ref="DataNucleus"/>
     </Logger>
     <Logger name="DataNucleus.Connection" level="info" additivity="false">
       <AppenderRef ref="DataNucleus"/>
     </Logger>
     <Logger name="DataNucleus.Query" level="info" additivity="false">
       <AppenderRef ref="DataNucleus"/>
     </Logger>
     <Logger name="DataNucleus.Cache" level="info" additivity="false">
       <AppenderRef ref="DataNucleus"/>
     </Logger>
     <Logger name="DataNucleus.MetaData" level="info" additivity="false">
       <AppenderRef ref="DataNucleus"/>
     </Logger>
     <Logger name="DataNucleus.Datastore" level="info" additivity="false">
       <AppenderRef ref="DataNucleus"/>
     </Logger>
     <Logger name="DataNucleus.General" level="info" additivity="false">
       <AppenderRef ref="DataNucleus"/>
     </Logger>
     <Logger name="DataNucleus.Lifecycle" level="info" additivity="false">
       <AppenderRef ref="DataNucleus"/>
     </Logger>
     <Logger name="DataNucleus.ValueGeneration" level="info" additivity="false">
       <AppenderRef ref="DataNucleus"/>
     </Logger>
    <Logger name="DataNucleus.Enhancer" level="info" additivity="false">
      <AppenderRef ref="DataNucleus"/>
    </Logger>
    <Logger name="DataNucleus.SchemaTool" level="info" additivity="false">
      <AppenderRef ref="DataNucleus"/>
    </Logger>
    <Logger name="DataNucleus.JDO" level="info" additivity="false">
      <AppenderRef ref="DataNucleus"/>
    </Logger>
    <Logger name="DataNucleus.JPA" level="info" additivity="false">
      <AppenderRef ref="DataNucleus"/>
    </Logger>
    <Logger name="DataNucleus.JCA" level="info" additivity="false">
      <AppenderRef ref="DataNucleus"/>
    </Logger>
    <Logger name="DataNucleus.IDE" level="info" additivity="false">
      <AppenderRef ref="DataNucleus"/>
    </Logger>
     -->
    
    <!-- C3P0 Loggers -->
   <Logger name="com.mchange.v2" level="info" additivity="false">
      <AppenderRef ref="DataNucleus"/>
    </Logger>
       
    <Root level="error">
      <AppenderRef ref="TCK"/>
      <AppenderRef ref="DataNucleus"/>
    </Root>
  </Loggers>
     
</Configuration>
