[jboss-svn-commits] JBoss Common SVN: r3340 - jboss-logmanager-log4j/trunk/src/main/java/org/jboss/logmanager/log4j.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Jul 8 19:34:24 EDT 2009


Author: david.lloyd at jboss.com
Date: 2009-07-08 19:34:24 -0400 (Wed, 08 Jul 2009)
New Revision: 3340

Added:
   jboss-logmanager-log4j/trunk/src/main/java/org/jboss/logmanager/log4j/BridgeLogger.java
   jboss-logmanager-log4j/trunk/src/main/java/org/jboss/logmanager/log4j/BridgeRepository.java
   jboss-logmanager-log4j/trunk/src/main/java/org/jboss/logmanager/log4j/BridgeRepositorySelector.java
   jboss-logmanager-log4j/trunk/src/main/java/org/jboss/logmanager/log4j/LevelMapping.java
Modified:
   jboss-logmanager-log4j/trunk/src/main/java/org/jboss/logmanager/log4j/ConvertedLoggingEvent.java
Log:
Logger forwarding mechanism

Added: jboss-logmanager-log4j/trunk/src/main/java/org/jboss/logmanager/log4j/BridgeLogger.java
===================================================================
--- jboss-logmanager-log4j/trunk/src/main/java/org/jboss/logmanager/log4j/BridgeLogger.java	                        (rev 0)
+++ jboss-logmanager-log4j/trunk/src/main/java/org/jboss/logmanager/log4j/BridgeLogger.java	2009-07-08 23:34:24 UTC (rev 3340)
@@ -0,0 +1,201 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2009, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.jboss.logmanager.log4j;
+
+import org.jboss.logmanager.Logger;
+import org.jboss.logmanager.ExtLogRecord;
+
+import org.apache.log4j.Appender;
+import org.apache.log4j.Priority;
+import org.apache.log4j.Level;
+import org.apache.log4j.spi.LoggingEvent;
+
+import java.util.Enumeration;
+import java.util.ResourceBundle;
+import java.util.Collections;
+
+public final class BridgeLogger extends org.apache.log4j.Logger {
+
+    private static final String FQCN = BridgeLogger.class.getName();
+
+    private final Logger logger;
+
+    public BridgeLogger(final Logger logger) {
+        super(logger.getName());
+        this.logger = logger;
+    }
+
+    public void addAppender(final Appender newAppender) {
+        // ignored
+    }
+
+    public void callAppenders(final LoggingEvent event) {
+        // ignored for now (TODO?)
+    }
+
+    public void fatal(final Object message) {
+        logger.log(FQCN, org.jboss.logmanager.Level.FATAL, String.valueOf(message), null);
+    }
+
+    public void fatal(final Object message, final Throwable t) {
+        logger.log(FQCN, org.jboss.logmanager.Level.FATAL, String.valueOf(message), t);
+    }
+
+    public void error(final Object message) {
+        logger.log(FQCN, org.jboss.logmanager.Level.ERROR, String.valueOf(message), null);
+    }
+
+    public void error(final Object message, final Throwable t) {
+        logger.log(FQCN, org.jboss.logmanager.Level.ERROR, String.valueOf(message), t);
+    }
+
+    public void warn(final Object message) {
+        logger.log(FQCN, org.jboss.logmanager.Level.WARN, String.valueOf(message), null);
+    }
+
+    public void warn(final Object message, final Throwable t) {
+        logger.log(FQCN, org.jboss.logmanager.Level.WARN, String.valueOf(message), t);
+    }
+
+    public void info(final Object message) {
+        logger.log(FQCN, org.jboss.logmanager.Level.INFO, String.valueOf(message), null);
+    }
+
+    public void info(final Object message, final Throwable t) {
+        logger.log(FQCN, org.jboss.logmanager.Level.INFO, String.valueOf(message), t);
+    }
+
+    public boolean isInfoEnabled() {
+        return logger.isLoggable(org.jboss.logmanager.Level.INFO);
+    }
+
+    public void debug(final Object message) {
+        logger.log(FQCN, org.jboss.logmanager.Level.DEBUG, String.valueOf(message), null);
+    }
+
+    public void debug(final Object message, final Throwable t) {
+        logger.log(FQCN, org.jboss.logmanager.Level.DEBUG, String.valueOf(message), t);
+    }
+
+    public boolean isDebugEnabled() {
+        return logger.isLoggable(org.jboss.logmanager.Level.DEBUG);
+    }
+
+    public void trace(final Object message) {
+        logger.log(FQCN, org.jboss.logmanager.Level.TRACE, String.valueOf(message), null);
+    }
+
+    public void trace(final Object message, final Throwable t) {
+        logger.log(FQCN, org.jboss.logmanager.Level.TRACE, String.valueOf(message), t);
+    }
+
+    public boolean isTraceEnabled() {
+        return logger.isLoggable(org.jboss.logmanager.Level.TRACE);
+    }
+
+    protected void forcedLog(final String fqcn, final Priority level, final Object message, final Throwable t) {
+        // ignored
+    }
+
+    public boolean getAdditivity() {
+        return logger.getUseParentHandlers();
+    }
+
+    public Enumeration getAllAppenders() {
+        return Collections.enumeration(Collections.emptySet());
+    }
+
+    public Appender getAppender(final String name) {
+        // ignored
+        return null;
+    }
+
+    public Level getEffectiveLevel() {
+        return LevelMapping.getPriorityFor(logger.getLevel());
+    }
+
+    public Priority getChainedPriority() {
+        return getEffectiveLevel();
+    }
+
+    public ResourceBundle getResourceBundle() {
+        return logger.getResourceBundle();
+    }
+
+    public boolean isAttached(final Appender appender) {
+        return false;
+    }
+
+    public boolean isEnabledFor(final Priority level) {
+        return logger.isLoggable(LevelMapping.getLevelFor(level));
+    }
+
+    public void l7dlog(final Priority priority, final String key, final Throwable t) {
+        logger.log(FQCN, LevelMapping.getLevelFor(level), key, t);
+    }
+
+    public void l7dlog(final Priority priority, final String key, final Object[] params, final Throwable t) {
+        logger.log(FQCN, LevelMapping.getLevelFor(level), key, ExtLogRecord.FormatStyle.MESSAGE_FORMAT, params, t);
+    }
+
+    public void log(final Priority priority, final Object message, final Throwable t) {
+        logger.log(FQCN, LevelMapping.getLevelFor(level), String.valueOf(message), t);
+    }
+
+    public void log(final Priority priority, final Object message) {
+    }
+
+    public void log(final String callerFQCN, final Priority level, final Object message, final Throwable t) {
+        logger.log(callerFQCN, LevelMapping.getLevelFor(level), String.valueOf(message), t);
+    }
+
+    public void removeAllAppenders() {
+        // ignored
+    }
+
+    public void removeAppender(final Appender appender) {
+        // ignored
+    }
+
+    public void removeAppender(final String name) {
+        // ignored
+    }
+
+    public void setAdditivity(final boolean additive) {
+        // ignored
+    }
+
+    @SuppressWarnings({ "deprecation" })
+    public void setLevel(final Level level) {
+        setPriority(level);
+    }
+
+    @Deprecated
+    public void setPriority(final Priority priority) {
+        logger.setLevel(LevelMapping.getLevelFor(priority));
+    }
+
+    public void setResourceBundle(final ResourceBundle bundle) {
+        // ignored
+    }
+}

Added: jboss-logmanager-log4j/trunk/src/main/java/org/jboss/logmanager/log4j/BridgeRepository.java
===================================================================
--- jboss-logmanager-log4j/trunk/src/main/java/org/jboss/logmanager/log4j/BridgeRepository.java	                        (rev 0)
+++ jboss-logmanager-log4j/trunk/src/main/java/org/jboss/logmanager/log4j/BridgeRepository.java	2009-07-08 23:34:24 UTC (rev 3340)
@@ -0,0 +1,115 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2009, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.jboss.logmanager.log4j;
+
+import java.util.Enumeration;
+import java.util.Collections;
+
+import org.apache.log4j.spi.LoggerRepository;
+import org.apache.log4j.spi.HierarchyEventListener;
+import org.apache.log4j.spi.LoggerFactory;
+import org.apache.log4j.Level;
+import org.apache.log4j.Category;
+import org.apache.log4j.Logger;
+import org.apache.log4j.Appender;
+
+import org.jboss.logmanager.LogContext;
+
+public final class BridgeRepository implements LoggerRepository {
+    private final Object reposKey = new Object();
+
+    public void addHierarchyEventListener(final HierarchyEventListener listener) {
+        // ignore
+    }
+
+    public boolean isDisabled(final int level) {
+        return false;
+    }
+
+    public void setThreshold(final Level level) {
+        // ignore
+    }
+
+    public void setThreshold(final String val) {
+        // ignore
+    }
+
+    public void emitNoAppenderWarning(final Category cat) {
+        // ignore
+    }
+
+    public Level getThreshold() {
+        return Level.ALL;
+    }
+
+    public Logger getLogger(final String name) {
+        final org.jboss.logmanager.Logger lmLogger = LogContext.getLogContext().getLogger(name);
+        final Logger logger = (Logger) lmLogger.getAttachment(reposKey);
+        if (logger != null) {
+            return logger;
+        }
+        return create(lmLogger);
+    }
+
+    public Logger getLogger(final String name, final LoggerFactory factory) {
+        return getLogger(name);
+    }
+
+    public Logger getRootLogger() {
+        return getLogger("");
+    }
+
+    public Logger exists(final String name) {
+        final org.jboss.logmanager.Logger lmLogger = LogContext.getLogContext().getLoggerIfExists(name);
+        if (lmLogger == null) {
+            return null;
+        }
+        return create(lmLogger);
+    }
+
+    private Logger create(final org.jboss.logmanager.Logger lmLogger) {
+        final BridgeLogger logger = new BridgeLogger(lmLogger);
+        final BridgeLogger appearingLogger = (BridgeLogger) lmLogger.attachIfAbsent(reposKey, logger);
+        return appearingLogger != null ? appearingLogger : logger;
+    }
+
+    public void shutdown() {
+        // ignore
+    }
+
+    public Enumeration getCurrentLoggers() {
+        return Collections.enumeration(Collections.emptySet());
+    }
+
+    public Enumeration getCurrentCategories() {
+        return Collections.enumeration(Collections.emptySet());
+    }
+
+    public void fireAddAppenderEvent(final Category logger, final Appender appender) {
+        // ignore
+    }
+
+    public void resetConfiguration() {
+        // ignore
+    }
+}

Added: jboss-logmanager-log4j/trunk/src/main/java/org/jboss/logmanager/log4j/BridgeRepositorySelector.java
===================================================================
--- jboss-logmanager-log4j/trunk/src/main/java/org/jboss/logmanager/log4j/BridgeRepositorySelector.java	                        (rev 0)
+++ jboss-logmanager-log4j/trunk/src/main/java/org/jboss/logmanager/log4j/BridgeRepositorySelector.java	2009-07-08 23:34:24 UTC (rev 3340)
@@ -0,0 +1,42 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2009, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.jboss.logmanager.log4j;
+
+import org.apache.log4j.spi.RepositorySelector;
+import org.apache.log4j.spi.LoggerRepository;
+import org.apache.log4j.LogManager;
+
+public final class BridgeRepositorySelector implements RepositorySelector {
+
+    private static final Object guard = new Object();
+
+    private final BridgeRepository bridgeRepository = new BridgeRepository();
+
+    public LoggerRepository getLoggerRepository() {
+        return bridgeRepository;
+    }
+
+    public void start() {
+        LogManager.setRepositorySelector(this, guard);
+    }
+}

Modified: jboss-logmanager-log4j/trunk/src/main/java/org/jboss/logmanager/log4j/ConvertedLoggingEvent.java
===================================================================
--- jboss-logmanager-log4j/trunk/src/main/java/org/jboss/logmanager/log4j/ConvertedLoggingEvent.java	2009-07-08 23:33:01 UTC (rev 3339)
+++ jboss-logmanager-log4j/trunk/src/main/java/org/jboss/logmanager/log4j/ConvertedLoggingEvent.java	2009-07-08 23:34:24 UTC (rev 3340)
@@ -22,12 +22,8 @@
 
 package org.jboss.logmanager.log4j;
 
-import java.util.IdentityHashMap;
-import java.util.Map;
 import org.jboss.logmanager.ExtLogRecord;
-import org.jboss.logmanager.log4j.handlers.Log4jJDKLevel;
 
-import java.util.logging.Level;
 import org.apache.log4j.Category;
 import org.apache.log4j.spi.LocationInfo;
 import org.apache.log4j.spi.LoggingEvent;
@@ -49,7 +45,7 @@
         super(rec.getLoggerClassName(),
                 new DummyCategory(rec.getLoggerName()),
                 rec.getMillis(),
-                getPriorityFor(rec.getLevel()),
+                LevelMapping.getPriorityFor(rec.getLevel()),
                 rec.getMessage(),
                 rec.getThreadName(),
                 rec.getThrown() == null ? null : new ThrowableInformation(rec.getThrown()),
@@ -58,33 +54,6 @@
                 null);
     }
 
-    private static final Map<Level, org.apache.log4j.Level> priorityMap;
-
-    static {
-        final Map<Level, org.apache.log4j.Level> map = new IdentityHashMap<Level, org.apache.log4j.Level>();
-        map.put(Level.SEVERE, Log4jJDKLevel.SEVERE);
-        map.put(Level.WARNING, Log4jJDKLevel.WARNING);
-        map.put(Level.CONFIG, Log4jJDKLevel.CONFIG);
-        map.put(Level.INFO, Log4jJDKLevel.INFO);
-        map.put(Level.FINE, Log4jJDKLevel.FINE);
-        map.put(Level.FINER, Log4jJDKLevel.FINER);
-        map.put(Level.FINEST, Log4jJDKLevel.FINEST);
-
-        map.put(org.jboss.logmanager.Level.FATAL, org.apache.log4j.Level.FATAL);
-        map.put(org.jboss.logmanager.Level.ERROR, org.apache.log4j.Level.ERROR);
-        map.put(org.jboss.logmanager.Level.WARN, org.apache.log4j.Level.WARN);
-        map.put(org.jboss.logmanager.Level.INFO, org.apache.log4j.Level.INFO);
-        map.put(org.jboss.logmanager.Level.DEBUG, org.apache.log4j.Level.DEBUG);
-        map.put(org.jboss.logmanager.Level.TRACE, org.apache.log4j.Level.TRACE);
-
-        priorityMap = map;
-    }
-
-    static org.apache.log4j.Level getPriorityFor(Level level) {
-        final org.apache.log4j.Level p;
-        return (p = priorityMap.get(level)) == null ? org.apache.log4j.Level.DEBUG : p;
-    }
-
     private static final class DummyCategory extends Category {
 
         protected DummyCategory(String name) {

Added: jboss-logmanager-log4j/trunk/src/main/java/org/jboss/logmanager/log4j/LevelMapping.java
===================================================================
--- jboss-logmanager-log4j/trunk/src/main/java/org/jboss/logmanager/log4j/LevelMapping.java	                        (rev 0)
+++ jboss-logmanager-log4j/trunk/src/main/java/org/jboss/logmanager/log4j/LevelMapping.java	2009-07-08 23:34:24 UTC (rev 3340)
@@ -0,0 +1,82 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2009, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.jboss.logmanager.log4j;
+
+import java.util.Map;
+import java.util.IdentityHashMap;
+
+import java.util.logging.Level;
+import org.apache.log4j.Priority;
+
+import org.jboss.logmanager.log4j.handlers.Log4jJDKLevel;
+
+public final class LevelMapping {
+
+    private static final Map<Level, org.apache.log4j.Level> priorityMap;
+
+    private LevelMapping() {
+    }
+
+    static {
+        final Map<Level, org.apache.log4j.Level> map = new IdentityHashMap<Level, org.apache.log4j.Level>();
+        map.put(Level.SEVERE, Log4jJDKLevel.SEVERE);
+        map.put(Level.WARNING, Log4jJDKLevel.WARNING);
+        map.put(Level.CONFIG, Log4jJDKLevel.CONFIG);
+        map.put(Level.INFO, Log4jJDKLevel.INFO);
+        map.put(Level.FINE, Log4jJDKLevel.FINE);
+        map.put(Level.FINER, Log4jJDKLevel.FINER);
+        map.put(Level.FINEST, Log4jJDKLevel.FINEST);
+
+        map.put(org.jboss.logmanager.Level.FATAL, org.apache.log4j.Level.FATAL);
+        map.put(org.jboss.logmanager.Level.ERROR, org.apache.log4j.Level.ERROR);
+        map.put(org.jboss.logmanager.Level.WARN, org.apache.log4j.Level.WARN);
+        map.put(org.jboss.logmanager.Level.INFO, org.apache.log4j.Level.INFO);
+        map.put(org.jboss.logmanager.Level.DEBUG, org.apache.log4j.Level.DEBUG);
+        map.put(org.jboss.logmanager.Level.TRACE, org.apache.log4j.Level.TRACE);
+        priorityMap = map;
+    }
+
+    static org.apache.log4j.Level getPriorityFor(Level level) {
+        final org.apache.log4j.Level p;
+        return (p = priorityMap.get(level)) == null ? org.apache.log4j.Level.DEBUG : p;
+    }
+
+    static Level getLevelFor(Priority level) {
+        switch (level.toInt()) {
+            case org.apache.log4j.Level.TRACE_INT:
+                return org.jboss.logmanager.Level.TRACE;
+            case org.apache.log4j.Level.DEBUG_INT:
+                return org.jboss.logmanager.Level.DEBUG;
+            case org.apache.log4j.Level.INFO_INT:
+                return org.jboss.logmanager.Level.INFO;
+            case org.apache.log4j.Level.WARN_INT:
+                return org.jboss.logmanager.Level.WARN;
+            case org.apache.log4j.Level.ERROR_INT:
+                return org.jboss.logmanager.Level.ERROR;
+            case org.apache.log4j.Level.FATAL_INT:
+                return org.jboss.logmanager.Level.FATAL;
+            default:
+                return org.jboss.logmanager.Level.DEBUG;
+        }
+    }
+}
\ No newline at end of file




More information about the jboss-svn-commits mailing list