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