[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