You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jdo-commits@db.apache.org by mb...@apache.org on 2020/10/11 16:45:59 UTC

[db-jdo] branch master updated: JDO-786: log4j 1.2.17 -> 2.13.3

This is an automated email from the ASF dual-hosted git repository.

mbo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/db-jdo.git


The following commit(s) were added to refs/heads/master by this push:
     new 0e9beb7  JDO-786: log4j 1.2.17 -> 2.13.3
0e9beb7 is described below

commit 0e9beb757396d8bfee7d41459ff57a5a22446f2e
Author: Michael Bouschen <mb...@apache.org>
AuthorDate: Sun Oct 11 18:45:50 2020 +0200

    JDO-786: log4j 1.2.17 -> 2.13.3
---
 .../org/apache/jdo/exectck/AbstractTCKMojo.java    |  13 ++-
 .../main/java/org/apache/jdo/exectck/Enhance.java  |   8 +-
 .../main/java/org/apache/jdo/exectck/RunTCK.java   |  22 ++++-
 tck/pom.xml                                        |  16 +++-
 .../org/apache/jdo/tck/util/TCKFileAppender.java   |  86 -----------------
 tck/src/main/resources/conf/iut-log4j2.xml         | 106 +++++++++++++++++++++
 tck/src/main/resources/conf/jdori-log4j.properties |  93 ------------------
 tck/src/main/resources/conf/jdori-log4j2.xml       | 106 +++++++++++++++++++++
 8 files changed, 256 insertions(+), 194 deletions(-)

diff --git a/exectck/src/main/java/org/apache/jdo/exectck/AbstractTCKMojo.java b/exectck/src/main/java/org/apache/jdo/exectck/AbstractTCKMojo.java
index 24054b4..e1ea1d9 100644
--- a/exectck/src/main/java/org/apache/jdo/exectck/AbstractTCKMojo.java
+++ b/exectck/src/main/java/org/apache/jdo/exectck/AbstractTCKMojo.java
@@ -32,7 +32,12 @@ import org.apache.maven.plugins.annotations.Parameter;
  */
 public abstract class AbstractTCKMojo extends AbstractMojo {
 
-	/**
+    /**
+     * Filename of log4j2 configuration file.
+     */
+    protected final String LOG4J2_CONFIGURATION = "log4j2.xml";
+
+    /**
      * Location of TCK generated output.
      */
     @Parameter( property = "project.build.directory", defaultValue = "${basedir}/target", required = true)
@@ -128,10 +133,10 @@ public abstract class AbstractTCKMojo extends AbstractMojo {
 		}
     }
 
-    protected void copyLog4jPropertiesFile () throws IOException {
-        File fromFile = new File(confDirectory + File.separator + impl + "-log4j.properties");
+    protected void copyLog4j2ConfigurationFile() throws IOException {
+        File fromFile = new File(confDirectory + File.separator + impl + "-" + LOG4J2_CONFIGURATION);
         File toFile = new File(buildDirectory + File.separator + "classes" +
-                File.separator + "log4j.properties");
+                File.separator + LOG4J2_CONFIGURATION);
         FileUtils.copyFile(fromFile, toFile);
     }
 }
diff --git a/exectck/src/main/java/org/apache/jdo/exectck/Enhance.java b/exectck/src/main/java/org/apache/jdo/exectck/Enhance.java
index 7e5c5ee..0c08469 100644
--- a/exectck/src/main/java/org/apache/jdo/exectck/Enhance.java
+++ b/exectck/src/main/java/org/apache/jdo/exectck/Enhance.java
@@ -88,7 +88,7 @@ public class Enhance extends AbstractTCKMojo {
         }
 
         try {
-            copyLog4jPropertiesFile();
+            copyLog4j2ConfigurationFile();
         } catch (IOException ex) {
             Logger.getLogger(Enhance.class.getName()).log(Level.SEVERE, null, ex);
         }
@@ -202,7 +202,7 @@ public class Enhance extends AbstractTCKMojo {
                 Logger.getLogger(Enhance.class.getName()).log(Level.SEVERE, null, ex);
             }
             
-            // Context classloader for finding log4j.properties
+            // Context classloader for finding log4j2 configuration
             ClassLoader prevCl = Thread.currentThread().getContextClassLoader();
             try {
                 URL enhancedClassesUrl = (new File(enhancedIdDirName)).toURI().toURL();
@@ -242,9 +242,9 @@ public class Enhance extends AbstractTCKMojo {
             try {
                 File logFile = new File(implLogFile);
                 File testLogFile = new File(testLogFilename);
-                FileUtils.copyFile(logFile, testLogFile);
+                FileUtils.moveFile(logFile, testLogFile);
             } catch (Exception e) {
-                System.out.println(">> Error copying implementation log file: " +
+                System.out.println(">> Error moving implementation log file: " +
                     e.getMessage());
             }
         }
diff --git a/exectck/src/main/java/org/apache/jdo/exectck/RunTCK.java b/exectck/src/main/java/org/apache/jdo/exectck/RunTCK.java
index 94c0345..fff1cfc 100644
--- a/exectck/src/main/java/org/apache/jdo/exectck/RunTCK.java
+++ b/exectck/src/main/java/org/apache/jdo/exectck/RunTCK.java
@@ -45,7 +45,9 @@ public class RunTCK extends AbstractTCKMojo {
 
     private static final String TCK_PARAM_ON_FAILURE_FAIL_FAST = "failFast"; 
     private static final String TCK_PARAM_ON_FAILURE_FAIL_EVENTUALLY = "failGoal"; 
-    private static final String TCK_PARAM_ON_FAILURE_LOG_ONLY = "logOnly"; 
+    private static final String TCK_PARAM_ON_FAILURE_LOG_ONLY = "logOnly";
+
+    private static final String TCK_LOG_FILE = "tck.txt";
 
     /**
      * To skip running of TCK, set to false.
@@ -234,7 +236,7 @@ public class RunTCK extends AbstractTCKMojo {
         propsString.add("-Djdo.tck.log.directory=" + thisLogDir);
 
         try {
-            copyLog4jPropertiesFile();
+            copyLog4j2ConfigurationFile();
         } catch (IOException ex) {
             Logger.getLogger(RunTCK.class.getName()).log(Level.SEVERE, null, ex);
         }
@@ -438,6 +440,14 @@ public class RunTCK extends AbstractTCKMojo {
                         System.out.println(">> Error copying implementation log file: "
                                 + e.getMessage());
                     }
+                    String tckLogFilename = thisLogDir + idname + "-" + configName + "-" + TCK_LOG_FILE;
+                    try {
+                        File logFile = new File(TCK_LOG_FILE);
+                        FileUtils.copyFile(logFile, new File(tckLogFilename));
+                    } catch (Exception e) {
+                        System.out.println(">> Error copying tck log file: "
+                                + e.getMessage());
+                    }
 
                     if (runonce.equals("true")) {
                         alreadyran = true;
@@ -459,8 +469,12 @@ public class RunTCK extends AbstractTCKMojo {
         try {
             FileUtils.forceDelete(new File(implLogFile));
         } catch (Exception e) {
-            System.out.println(">> Error deleting log file: "
-                    + e.getMessage());
+            System.out.println(">> Error deleting log file: " + e.getMessage());
+        }
+        try {
+            FileUtils.forceDelete(new File(TCK_LOG_FILE));
+        } catch (Exception e) {
+            System.out.println(">> Error deleting log file: " + e.getMessage());
         }
 
         // Output results
diff --git a/tck/pom.xml b/tck/pom.xml
index 183fb50..744e9e6 100644
--- a/tck/pom.xml
+++ b/tck/pom.xml
@@ -166,9 +166,19 @@
                     <version>5.2.5</version>
                 </dependency>
                 <dependency>
-                    <groupId>log4j</groupId>
-                    <artifactId>log4j</artifactId>
-                    <version>1.2.17</version>
+                    <groupId>org.apache.logging.log4j</groupId>
+                    <artifactId>log4j-api</artifactId>
+                    <version>2.13.3</version>
+                </dependency>
+                <dependency>
+                    <groupId>org.apache.logging.log4j</groupId>
+                    <artifactId>log4j-core</artifactId>
+                    <version>2.13.3</version>
+                </dependency>
+                <dependency>
+                    <groupId>org.apache.logging.log4j</groupId>
+                    <artifactId>log4j-jcl</artifactId>
+                    <version>2.13.3</version>
                 </dependency>
                 <dependency>
                   <!-- License: CDDL + GPLv2 with classpath exception https://github.com/javaee/javax.annotation/blob/master/LICENSE -->
diff --git a/tck/src/main/java/org/apache/jdo/tck/util/TCKFileAppender.java b/tck/src/main/java/org/apache/jdo/tck/util/TCKFileAppender.java
deleted file mode 100644
index cc0c13d..0000000
--- a/tck/src/main/java/org/apache/jdo/tck/util/TCKFileAppender.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * 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.
- */
-
-package org.apache.jdo.tck.util;
-
-import java.io.IOException;
-
-import org.apache.log4j.FileAppender;
-import org.apache.log4j.Layout;
-
-/**
- *  TCKFileAppender appends log events to a file.
- *  Overrides {@link FileAppender#setFile(java.lang.String, boolean, boolean, int)}
- *  changing the given file name.
- *  For details on the construction of the changed file name see method
- *  {@link BatchTestRunner#changeFileName(String)}.
- */
-public class TCKFileAppender extends FileAppender {
-
-    /**
-     * @see FileAppender#FileAppender()
-     */
-    public TCKFileAppender() {}
-
-    /**
-     * Constructor
-     * @param layout layout
-     * @param filename filename
-     * @param append append
-     * @param bufferedIO bufferedIO option
-     * @param bufferSize bufferSize
-     * @throws IOException exception
-     */
-    public TCKFileAppender(Layout layout, String filename, boolean append,
-            boolean bufferedIO, int bufferSize) throws IOException {
-        super(layout, filename, append, bufferedIO, bufferSize);
-    }
-
-    /**
-     * @see FileAppender#FileAppender(org.apache.log4j.Layout, java.lang.String, boolean, boolean, int)
-     * @param layout layout
-     * @param filename file name
-     * @param append append option
-     * @throws IOException exception
-     */
-    public TCKFileAppender(Layout layout, String filename, boolean append)
-        throws IOException {
-        super(layout, filename, append);
-    }
-
-    /**
-     * @see FileAppender#FileAppender(org.apache.log4j.Layout, java.lang.String)
-     * @param layout  layout
-     * @param filename file name
-     * @throws IOException exception
-     */
-    public TCKFileAppender(Layout layout, String filename) throws IOException {
-        this(layout, filename, true);
-    }
-
-    /**
-     * The given file name is changed calling method
-     * {@link BatchTestRunner#changeFileName(String)}.
-     * @see FileAppender#setFile(java.lang.String, boolean, boolean, int)
-     */
-    public synchronized void setFile(String fileName, boolean append, boolean bufferedIO, int bufferSize) 
-        throws IOException {
-        String changedFileName = BatchTestRunner.changeFileName(fileName);
-        super.setFile(changedFileName, append, bufferedIO, bufferSize);
-    }
-}
-
diff --git a/tck/src/main/resources/conf/iut-log4j2.xml b/tck/src/main/resources/conf/iut-log4j2.xml
new file mode 100644
index 0000000..3901e09
--- /dev/null
+++ b/tck/src/main/resources/conf/iut-log4j2.xml
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Configuration
+    status="info"
+    strict="true"
+    name="iutConfig">
+  
+  <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>
diff --git a/tck/src/main/resources/conf/jdori-log4j.properties b/tck/src/main/resources/conf/jdori-log4j.properties
deleted file mode 100644
index 9d67c02..0000000
--- a/tck/src/main/resources/conf/jdori-log4j.properties
+++ /dev/null
@@ -1,93 +0,0 @@
-#
-# 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.
-
-#############################
-# TCK loggers and appenders 
-#############################
-
-# Root logger
-log4j.rootLogger = ERROR, TCK
-
-# TCK logger
-log4j.logger.org.apache.jdo.tck = INFO, TCK
-log4j.additivity.org.apache.jdo.tck = false 
-
-# SpringFramework loggers 
-log4j.logger.org.springframework = ERROR, TCK
-log4j.additivity.org.springframework = false 
-log4j.logger.org.apache.jdo.tck.pc.company.CompanyModelReader = ERROR, TCK
-log4j.logger.org.apache.jdo.tck.pc.mylib.MylibReader = ERROR, TCK
-
-# TCK appenders
-log4j.appender.TCK = org.apache.jdo.tck.util.TCKFileAppender
-log4j.appender.TCK.File = tck.txt
-log4j.appender.TCK.layout = org.apache.log4j.PatternLayout
-log4j.appender.TCK.layout.ConversionPattern = %d{HH:mm:ss,SSS} (%t) %-5p [%c] - %m%n
-
-############################################
-# JDO vendor specific loggers and appenders 
-############################################
-
-#log4j.logger.<vendor> = INFO
-#log4j.additivity.<vendor> = false 
-
-#log4j.appender.<VENDOR> = org.apache.jdo.tck.util.TCKFileAppender
-#log4j.appender.<VENDOR>.File = <vendor>.txt
-#log4j.appender.<VENDOR>.layout = org.apache.log4j.PatternLayout
-#log4j.appender.<VENDOR>.layout.ConversionPattern = %d{HH:mm:ss,SSS} (%t) %-5p [%c] - %m%n
-
-###################################
-# DataNucleus loggers and appenders 
-###################################
-
-# DataNucleus loggers
-# For more details on DataNucleus logging see 
-# http://www.datanucleus.org/products/accessplatform/logging.html
-log4j.logger.DataNucleus = INFO, DataNucleus
-log4j.logger.DataNucleus.Enhancer = INFO, DataNucleus
-log4j.additivity.DataNucleus = false
-#log4j.logger.DataNucleus.JDO = INFO, DataNucleus
-#log4j.logger.DataNucleus.Persistence = INFO, DataNucleus
-#log4j.logger.DataNucleus.Query = INFO, DataNucleus
-#log4j.logger.DataNucleus.Lifecycle = INFO, DataNucleus
-#log4j.logger.DataNucleus.Reachability = INFO, DataNucleus
-#log4j.logger.DataNucleus.Cache = INFO, DataNucleus
-#log4j.logger.DataNucleus.ClassLoading = INFO, DataNucleus
-#log4j.logger.DataNucleus.MetaData = DEBUG, DataNucleus
-#log4j.logger.DataNucleus.Management = DEBUG, DataNucleus
-#log4j.logger.DataNucleus.General = DEBUG, DataNucleus
-#log4j.logger.DataNucleus.Connection = DEBUG, DataNucleus
-#log4j.logger.DataNucleus.JCA = DEBUG, DataNucleus
-#log4j.logger.DataNucleus.Transaction = INFO, DataNucleus
-#log4j.logger.DataNucleus.Plugin = INFO, DataNucleus
-#log4j.logger.DataNucleus.Store.Poid = INFO, DataNucleus
-#log4j.logger.DataNucleus.Datastore = DEBUG, DataNucleus
-#log4j.logger.DataNucleus.Datastore.Schema = INFO, DataNucleus
-#log4j.logger.DataNucleus.Datastore.Persist = INFO, DataNucleus
-#log4j.logger.DataNucleus.Datastore.Retrieve = DEBUG, DataNucleus
-#log4j.logger.DataNucleus.SchemaTool = INFO, DataNucleus
-
-# C3P0 loggers
-log4j.logger.com.mchange.v2 = INFO, DataNucleus
-log4j.additivity.com.mchange.v2 = false 
-
-# DataNucleus appenders
-log4j.appender.DataNucleus = org.apache.jdo.tck.util.TCKFileAppender
-#log4j.appender.DataNucleus = org.apache.log4j.FileAppender
-log4j.appender.DataNucleus.Enhancer.File = datanucleus.txt
-log4j.appender.DataNucleus.File = datanucleus.txt
-log4j.appender.DataNucleus.layout = org.apache.log4j.PatternLayout
-log4j.appender.DataNucleus.layout.ConversionPattern = %d{HH:mm:ss,SSS} (%t) %-5p [%c] - %m%n
diff --git a/tck/src/main/resources/conf/jdori-log4j2.xml b/tck/src/main/resources/conf/jdori-log4j2.xml
new file mode 100644
index 0000000..b1971ae
--- /dev/null
+++ b/tck/src/main/resources/conf/jdori-log4j2.xml
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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>