You are viewing a plain text version of this content. The canonical link for it is here.
Posted to torque-dev@db.apache.org by tf...@apache.org on 2013/02/14 09:27:22 UTC

svn commit: r1446063 - in /db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/configuration/controller: DummyLoggingAdapter.java Log4jLoggingAdapter.java LoggingAdapter.java Loglevel.java

Author: tfischer
Date: Thu Feb 14 08:27:22 2013
New Revision: 1446063

URL: http://svn.apache.org/r1446063
Log:
TORQUE-265 
Provide a bridge between the torque generator and the underlying logging system

Added:
    db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/configuration/controller/DummyLoggingAdapter.java
    db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/configuration/controller/Log4jLoggingAdapter.java
    db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/configuration/controller/LoggingAdapter.java
Modified:
    db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/configuration/controller/Loglevel.java

Added: db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/configuration/controller/DummyLoggingAdapter.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/configuration/controller/DummyLoggingAdapter.java?rev=1446063&view=auto
==============================================================================
--- db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/configuration/controller/DummyLoggingAdapter.java (added)
+++ db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/configuration/controller/DummyLoggingAdapter.java Thu Feb 14 08:27:22 2013
@@ -0,0 +1,39 @@
+package org.apache.torque.generator.configuration.controller;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * Dummy implementation of the LoggingAdapter interface.
+ * Actually does nothing.
+
+ * @version $Id: $
+ *
+ */
+public class DummyLoggingAdapter implements LoggingAdapter
+{
+    /** The logger. */
+    private static Log log = LogFactory.getLog(DummyLoggingAdapter.class);
+
+
+    /**
+     * Always returns <code>Loglevel.INFO</code>.
+     *
+     * @return <code>Loglevel.INFO</code>.
+     */
+    public Loglevel getCurrentLoglevel()
+    {
+        return Loglevel.INFO;
+    }
+
+    /**
+     * Does nothing except logging the argument.
+     *
+     * @param loglevel ignored.
+     */
+    public void setLoglevel(Loglevel loglevel)
+    {
+        log.debug("apply() : Not Setting loglevel to " + loglevel
+                + " because this is a dummy implementation");
+    }
+}

Added: db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/configuration/controller/Log4jLoggingAdapter.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/configuration/controller/Log4jLoggingAdapter.java?rev=1446063&view=auto
==============================================================================
--- db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/configuration/controller/Log4jLoggingAdapter.java (added)
+++ db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/configuration/controller/Log4jLoggingAdapter.java Thu Feb 14 08:27:22 2013
@@ -0,0 +1,75 @@
+package org.apache.torque.generator.configuration.controller;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.log4j.Level;
+import org.apache.log4j.Logger;
+
+/**
+ * Allows reading and setting the current loglevel using log4j.
+ * @version $Id: $
+ *
+ */
+public class Log4jLoggingAdapter implements LoggingAdapter
+{
+    /** The logger. */
+    private static Log log = LogFactory.getLog(Log4jLoggingAdapter.class);
+
+    /** Map loglevel -> corresponding log4j level. */
+    private static final Map<Loglevel, Level> LOG4J_LEVELS;
+
+    static
+    {
+        Map<Loglevel, Level> log4jLevels = new HashMap<Loglevel, Level>();
+        log4jLevels.put(Loglevel.TRACE, Level.TRACE);
+        log4jLevels.put(Loglevel.DEBUG, Level.DEBUG);
+        log4jLevels.put(Loglevel.INFO, Level.INFO);
+        log4jLevels.put(Loglevel.WARN, Level.WARN);
+        log4jLevels.put(Loglevel.ERROR, Level.ERROR);
+        LOG4J_LEVELS = Collections.unmodifiableMap(log4jLevels);
+    }
+
+    /**
+     * Returns the current loglevel by reading the loglevel of the root logger.
+     *
+     * @return the current loglevel, or INFO if the current loglevel cannot
+     *         be determined.
+     */
+    public Loglevel getCurrentLoglevel()
+    {
+        Level level = Logger.getRootLogger().getLevel();
+        for (Map.Entry<Loglevel, Level> loglevel : LOG4J_LEVELS.entrySet())
+        {
+            if (loglevel.getValue().equals(level))
+            {
+                return loglevel.getKey();
+            }
+        }
+        return Loglevel.INFO;
+    }
+
+    /**
+     * Sets the loglevel to the given loglevel
+     * by changing the level of the log4j root logger.
+     *
+     *  @param loglevel the loglevel to set, not null.
+     */
+    public void setLoglevel(Loglevel loglevel)
+    {
+        if (loglevel == null)
+        {
+            return;
+        }
+        Level log4jLevel = LOG4J_LEVELS.get(loglevel);
+        if (Logger.getRootLogger().getLevel() != LOG4J_LEVELS.get(loglevel))
+        {
+            log.info("apply() : Setting loglevel to " + loglevel);
+            Logger.getRootLogger().setLevel(log4jLevel);
+        }
+    }
+
+}

Added: db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/configuration/controller/LoggingAdapter.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/configuration/controller/LoggingAdapter.java?rev=1446063&view=auto
==============================================================================
--- db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/configuration/controller/LoggingAdapter.java (added)
+++ db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/configuration/controller/LoggingAdapter.java Thu Feb 14 08:27:22 2013
@@ -0,0 +1,25 @@
+package org.apache.torque.generator.configuration.controller;
+
+/**
+ * Allows reading and setting the current loglevel.
+ * The implementation depends on the logging framework used.
+ *
+ * @version $Id: $
+ */
+public interface LoggingAdapter
+{
+    /**
+     * Returns the current loglevel.
+     *
+     * @return the current loglevel, or INFO if the current loglevel cannot
+     *         be determined.
+     */
+    public Loglevel getCurrentLoglevel();
+
+    /**
+     * Sets the loglevel to the given loglevel.
+     *
+     *  @param loglevel the loglevel to set, not null.
+     */
+    public void setLoglevel(Loglevel loglevel);
+}

Modified: db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/configuration/controller/Loglevel.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/configuration/controller/Loglevel.java?rev=1446063&r1=1446062&r2=1446063&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/configuration/controller/Loglevel.java (original)
+++ db/torque/torque4/trunk/torque-generator/src/main/java/org/apache/torque/generator/configuration/controller/Loglevel.java Thu Feb 14 08:27:22 2013
@@ -19,46 +19,39 @@ package org.apache.torque.generator.conf
  * under the License.
  */
 
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.log4j.Level;
-import org.apache.log4j.Logger;
 
 /**
- * The possible log levels. This implementation uses log4j internally,
+ * The possible log levels.
+ * The logging framework tio use can be set by  uses log4j internally,
  * but the interface is agnostic of the logging framework.
  */
 public enum Loglevel
 {
     /** Loglevel trace. */
-    TRACE("trace", Level.TRACE),
+    TRACE("trace"),
     /** Loglevel debug. */
-    DEBUG("debug", Level.DEBUG),
+    DEBUG("debug"),
     /** Loglevel info. */
-    INFO("info", Level.INFO),
+    INFO("info"),
     /** Loglevel warn. */
-    WARN("warn", Level.WARN),
+    WARN("warn"),
     /** Loglevel error. */
-    ERROR("error", Level.ERROR);
+    ERROR("error");
 
     /** The key of the loglevel. */
     private String key;
 
-    /** The log4j loglevel. */
-    private Level log4jLevel;
-
-    /** The logger. */
-    private static Log log = LogFactory.getLog(Loglevel.class);
+    /** The logging adapter to use. */
+    private static LoggingAdapter loggingAdapter = new Log4jLoggingAdapter();
 
     /**
      * Constructor.
      *
      * @param key the key, not null.
      */
-    private Loglevel(String key, Level log4jLevel)
+    private Loglevel(String key)
     {
         this.key = key;
-        this.log4jLevel = log4jLevel;
     }
 
     /**
@@ -76,11 +69,7 @@ public enum Loglevel
      */
     public void apply()
     {
-        if (Logger.getRootLogger().getLevel() != log4jLevel)
-        {
-            log.info("apply() : Setting loglevel to " + this);
-            Logger.getRootLogger().setLevel(log4jLevel);
-        }
+        loggingAdapter.setLoglevel(this);
     }
 
     /**
@@ -114,14 +103,32 @@ public enum Loglevel
      */
     public static Loglevel getCurrentLoglevel()
     {
-        Level level = Logger.getRootLogger().getLevel();
-        for (Loglevel loglevel : values())
+        return loggingAdapter.getCurrentLoglevel();
+    }
+
+    /**
+     * Returns the currently used logging adapter.
+     *
+     * @return the current logging adapter, not null.
+     */
+    public static LoggingAdapter getLoggingAdapter()
+    {
+        return loggingAdapter;
+    }
+
+    /**
+     * Sets the logging adapter.
+     *
+     * @return the logging adapter, not null.
+     *
+     * @throws NullPointerException if loggingAdapter is null.
+     */
+    public static void setLoggingAdapter(LoggingAdapter loggingAdapter)
+    {
+        if (loggingAdapter == null)
         {
-            if (loglevel.log4jLevel.equals(level))
-            {
-                return loglevel;
-            }
+            throw new NullPointerException("loggingAdapter must not be null");
         }
-        return INFO;
+        Loglevel.loggingAdapter = loggingAdapter;
     }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: torque-dev-unsubscribe@db.apache.org
For additional commands, e-mail: torque-dev-help@db.apache.org