Author: ceki Date: Wed Oct 1 18:20:09 2008 New Revision: 1154 Added: slf4j/trunk/slf4j-ext/src/main/java/org/slf4j/ext/LoggerWrapper.java slf4j/trunk/slf4j-ext/src/main/java/org/slf4j/ext/XLoggerFactory.java Modified: slf4j/trunk/slf4j-ext/pom.xml slf4j/trunk/slf4j-ext/src/main/java/org/slf4j/ext/XLogger.java
Log: Fixing bug 104 Modified: slf4j/trunk/slf4j-ext/pom.xml ============================================================================== --- slf4j/trunk/slf4j-ext/pom.xml (original) +++ slf4j/trunk/slf4j-ext/pom.xml Wed Oct 1 18:20:09 2008 @@ -5,7 +5,7 @@ <parent> <groupId>org.slf4j</groupId> <artifactId>slf4j-parent</artifactId> - <version>1.5.4-SNAPSHOT</version> + <version>1.5.4-SNAPSHOT </version> </parent> <modelVersion>4.0.0</modelVersion> Added: slf4j/trunk/slf4j-ext/src/main/java/org/slf4j/ext/LoggerWrapper.java ============================================================================== --- (empty file) +++ slf4j/trunk/slf4j-ext/src/main/java/org/slf4j/ext/LoggerWrapper.java Wed Oct 1 18:20:09 2008 @@ -0,0 +1,868 @@ +package org.slf4j.ext; + +import org.slf4j.Logger; +import org.slf4j.Marker; +import org.slf4j.helpers.MessageFormatter; +import org.slf4j.spi.LocationAwareLogger; + +/** + * A helper class wrapping an org.slf4j.Logger instance + * preserving location information if the wrapped + * instance supports it. + * + * @author Ralph Goers + * @author Ceki Gulcu + */ +public class LoggerWrapper implements Logger { + + // To ensure consistency between two instances sharing the same name (homonyms) + // a LoggerWrapper should not contain any state beyond + // the Logger instance it wraps. + // Note that 'instanceofLAL' directly depends on Logger. + // fqcn depend on the caller, but its value would not be different + // between successive invocations of a factory class + + final Logger logger; + final String fqcn; + // is this logger instance a LocationAwareLogger + final boolean instanceofLAL; + + public LoggerWrapper(Logger logger, String fcqn) { + this.logger = logger; + this.fqcn = fcqn; + if (logger instanceof LocationAwareLogger) { + instanceofLAL = true; + } else { + instanceofLAL = false; + } + } + + /** + * Delegate to the appropriate method of the underlying logger. + */ + public boolean isTraceEnabled() { + return logger.isTraceEnabled(); + } + + /** + * Delegate to the appropriate method of the underlying logger. + */ + public boolean isTraceEnabled(Marker marker) { + return logger.isTraceEnabled(marker); + } + + /** + * Delegate to the appropriate method of the underlying logger. + */ + public void trace(String msg) { + if (!logger.isTraceEnabled()) + return; + + if (instanceofLAL) { + ((LocationAwareLogger) logger).log(null, fqcn, + LocationAwareLogger.TRACE_INT, msg, null); + } else { + logger.trace(msg); + } + } + + /** + * Delegate to the appropriate method of the underlying logger. + */ + public void trace(String format, Object arg) { + if (!logger.isTraceEnabled()) + return; + + if (instanceofLAL) { + String formattedMessage = MessageFormatter.format(format, arg); + ((LocationAwareLogger) logger).log(null, fqcn, + LocationAwareLogger.TRACE_INT, formattedMessage, null); + } else { + logger.trace(format, arg); + } + } + + /** + * Delegate to the appropriate method of the underlying logger. + */ + public void trace(String format, Object arg1, Object arg2) { + if (!logger.isTraceEnabled()) + return; + + if (instanceofLAL) { + String formattedMessage = MessageFormatter.format(format, arg1, arg2); + ((LocationAwareLogger) logger).log(null, fqcn, + LocationAwareLogger.TRACE_INT, formattedMessage, null); + } else { + logger.trace(format, arg1, arg2); + } + } + + /** + * Delegate to the appropriate method of the underlying logger. + */ + public void trace(String format, Object[] argArray) { + if (!logger.isTraceEnabled()) + return; + + if (instanceofLAL) { + String formattedMessage = MessageFormatter.arrayFormat(format, argArray); + ((LocationAwareLogger) logger).log(null, fqcn, + LocationAwareLogger.TRACE_INT, formattedMessage, null); + } else { + logger.trace(format, argArray); + } + } + + /** + * Delegate to the appropriate method of the underlying logger. + */ + public void trace(String msg, Throwable t) { + if (!logger.isTraceEnabled()) + return; + + if (instanceofLAL) { + ((LocationAwareLogger) logger).log(null, fqcn, + LocationAwareLogger.TRACE_INT, msg, t); + } else { + logger.trace(msg, t); + } + } + + /** + * Delegate to the appropriate method of the underlying logger. + */ + public void trace(Marker marker, String msg) { + if (!logger.isTraceEnabled()) + return; + if (instanceofLAL) { + ((LocationAwareLogger) logger).log(marker, fqcn, + LocationAwareLogger.TRACE_INT, msg, null); + } else { + logger.trace(marker, msg); + } + } + + /** + * Delegate to the appropriate method of the underlying logger. + */ + public void trace(Marker marker, String format, Object arg) { + if (!logger.isTraceEnabled()) + return; + if (instanceofLAL) { + String formattedMessage = MessageFormatter.format(format, arg); + ((LocationAwareLogger) logger).log(marker, fqcn, + LocationAwareLogger.TRACE_INT, formattedMessage, null); + } else { + logger.trace(marker, format, arg); + } + } + + /** + * Delegate to the appropriate method of the underlying logger. + */ + public void trace(Marker marker, String format, Object arg1, Object arg2) { + if (!logger.isTraceEnabled()) + return; + if (instanceofLAL) { + String formattedMessage = MessageFormatter.format(format, arg1, arg2); + ((LocationAwareLogger) logger).log(marker, fqcn, + LocationAwareLogger.TRACE_INT, formattedMessage, null); + } else { + logger.trace(marker, format, arg1, arg2); + } + } + + /** + * Delegate to the appropriate method of the underlying logger. + */ + public void trace(Marker marker, String format, Object[] argArray) { + if (!logger.isTraceEnabled()) + return; + if (instanceofLAL) { + String formattedMessage = MessageFormatter.arrayFormat(format, argArray); + ((LocationAwareLogger) logger).log(marker, fqcn, + LocationAwareLogger.TRACE_INT, formattedMessage, null); + } else { + logger.trace(marker, format, argArray); + } + } + + /** + * Delegate to the appropriate method of the underlying logger. + */ + public void trace(Marker marker, String msg, Throwable t) { + if (!logger.isTraceEnabled()) + return; + if (instanceofLAL) { + ((LocationAwareLogger) logger).log(marker, fqcn, + LocationAwareLogger.TRACE_INT, msg, t); + } else { + logger.trace(marker, msg, t); + } + } + + /** + * Delegate to the appropriate method of the underlying logger. + */ + public boolean isDebugEnabled() { + return logger.isDebugEnabled(); + } + + /** + * Delegate to the appropriate method of the underlying logger. + */ + public boolean isDebugEnabled(Marker marker) { + return logger.isDebugEnabled(marker); + } + + /** + * Delegate to the appropriate method of the underlying logger. + */ + public void debug(String msg) { + if (!logger.isDebugEnabled()) + return; + + if (instanceofLAL) { + ((LocationAwareLogger) logger).log(null, fqcn, + LocationAwareLogger.DEBUG_INT, msg, null); + } else { + logger.debug(msg); + } + } + + /** + * Delegate to the appropriate method of the underlying logger. + */ + public void debug(String format, Object arg) { + if (!logger.isDebugEnabled()) + return; + + if (instanceofLAL) { + String formattedMessage = MessageFormatter.format(format, arg); + ((LocationAwareLogger) logger).log(null, fqcn, + LocationAwareLogger.DEBUG_INT, formattedMessage, null); + } else { + logger.debug(format, arg); + } + } + + /** + * Delegate to the appropriate method of the underlying logger. + */ + public void debug(String format, Object arg1, Object arg2) { + if (!logger.isDebugEnabled()) + return; + + if (instanceofLAL) { + String formattedMessage = MessageFormatter.format(format, arg1, arg2); + ((LocationAwareLogger) logger).log(null, fqcn, + LocationAwareLogger.DEBUG_INT, formattedMessage, null); + } else { + logger.debug(format, arg1, arg2); + } + } + + /** + * Delegate to the appropriate method of the underlying logger. + */ + public void debug(String format, Object[] argArray) { + if (!logger.isDebugEnabled()) + return; + + if (instanceofLAL) { + String formattedMessage = MessageFormatter.arrayFormat(format, argArray); + ((LocationAwareLogger) logger).log(null, fqcn, + LocationAwareLogger.DEBUG_INT, formattedMessage, null); + } else { + logger.debug(format, argArray); + } + } + + /** + * Delegate to the appropriate method of the underlying logger. + */ + public void debug(String msg, Throwable t) { + if (!logger.isDebugEnabled()) + return; + + if (instanceofLAL) { + ((LocationAwareLogger) logger).log(null, fqcn, + LocationAwareLogger.DEBUG_INT, msg, t); + } else { + logger.debug(msg, t); + } + } + + /** + * Delegate to the appropriate method of the underlying logger. + */ + public void debug(Marker marker, String msg) { + if (!logger.isDebugEnabled()) + return; + if (instanceofLAL) { + ((LocationAwareLogger) logger).log(marker, fqcn, + LocationAwareLogger.DEBUG_INT, msg, null); + } else { + logger.debug(marker, msg); + } + } + + /** + * Delegate to the appropriate method of the underlying logger. + */ + public void debug(Marker marker, String format, Object arg) { + if (!logger.isDebugEnabled()) + return; + if (instanceofLAL) { + String formattedMessage = MessageFormatter.format(format, arg); + ((LocationAwareLogger) logger).log(marker, fqcn, + LocationAwareLogger.DEBUG_INT, formattedMessage, null); + } else { + logger.debug(marker, format, arg); + } + } + + /** + * Delegate to the appropriate method of the underlying logger. + */ + public void debug(Marker marker, String format, Object arg1, Object arg2) { + if (!logger.isDebugEnabled()) + return; + if (instanceofLAL) { + String formattedMessage = MessageFormatter.format(format, arg1, arg2); + ((LocationAwareLogger) logger).log(marker, fqcn, + LocationAwareLogger.DEBUG_INT, formattedMessage, null); + } else { + logger.debug(marker, format, arg1, arg2); + } + } + + /** + * Delegate to the appropriate method of the underlying logger. + */ + public void debug(Marker marker, String format, Object[] argArray) { + if (!logger.isDebugEnabled()) + return; + if (instanceofLAL) { + String formattedMessage = MessageFormatter.arrayFormat(format, argArray); + ((LocationAwareLogger) logger).log(marker, fqcn, + LocationAwareLogger.DEBUG_INT, formattedMessage, null); + } else { + logger.debug(marker, format, argArray); + } + } + + /** + * Delegate to the appropriate method of the underlying logger. + */ + public void debug(Marker marker, String msg, Throwable t) { + if (!logger.isDebugEnabled()) + return; + if (instanceofLAL) { + ((LocationAwareLogger) logger).log(marker, fqcn, + LocationAwareLogger.DEBUG_INT, msg, t); + } else { + logger.debug(marker, msg, t); + } + } + + /** + * Delegate to the appropriate method of the underlying logger. + */ + public boolean isInfoEnabled() { + return logger.isInfoEnabled(); + } + + /** + * Delegate to the appropriate method of the underlying logger. + */ + public boolean isInfoEnabled(Marker marker) { + return logger.isInfoEnabled(marker); + } + + /** + * Delegate to the appropriate method of the underlying logger. + */ + public void info(String msg) { + if (!logger.isInfoEnabled()) + return; + + if (instanceofLAL) { + ((LocationAwareLogger) logger).log(null, fqcn, + LocationAwareLogger.INFO_INT, msg, null); + } else { + logger.info(msg); + } + } + + /** + * Delegate to the appropriate method of the underlying logger. + */ + public void info(String format, Object arg) { + if (!logger.isInfoEnabled()) + return; + + if (instanceofLAL) { + String formattedMessage = MessageFormatter.format(format, arg); + ((LocationAwareLogger) logger).log(null, fqcn, + LocationAwareLogger.INFO_INT, formattedMessage, null); + } else { + logger.info(format, arg); + } + } + + /** + * Delegate to the appropriate method of the underlying logger. + */ + public void info(String format, Object arg1, Object arg2) { + if (!logger.isInfoEnabled()) + return; + + if (instanceofLAL) { + String formattedMessage = MessageFormatter.format(format, arg1, arg2); + ((LocationAwareLogger) logger).log(null, fqcn, + LocationAwareLogger.INFO_INT, formattedMessage, null); + } else { + logger.info(format, arg1, arg2); + } + } + + /** + * Delegate to the appropriate method of the underlying logger. + */ + public void info(String format, Object[] argArray) { + if (!logger.isInfoEnabled()) + return; + + if (instanceofLAL) { + String formattedMessage = MessageFormatter.arrayFormat(format, argArray); + ((LocationAwareLogger) logger).log(null, fqcn, + LocationAwareLogger.INFO_INT, formattedMessage, null); + } else { + logger.info(format, argArray); + } + } + + /** + * Delegate to the appropriate method of the underlying logger. + */ + public void info(String msg, Throwable t) { + if (!logger.isInfoEnabled()) + return; + + if (instanceofLAL) { + ((LocationAwareLogger) logger).log(null, fqcn, + LocationAwareLogger.INFO_INT, msg, t); + } else { + logger.info(msg, t); + } + } + + /** + * Delegate to the appropriate method of the underlying logger. + */ + public void info(Marker marker, String msg) { + if (!logger.isInfoEnabled()) + return; + if (instanceofLAL) { + ((LocationAwareLogger) logger).log(marker, fqcn, + LocationAwareLogger.INFO_INT, msg, null); + } else { + logger.info(marker, msg); + } + } + + /** + * Delegate to the appropriate method of the underlying logger. + */ + public void info(Marker marker, String format, Object arg) { + if (!logger.isInfoEnabled()) + return; + if (instanceofLAL) { + String formattedMessage = MessageFormatter.format(format, arg); + ((LocationAwareLogger) logger).log(marker, fqcn, + LocationAwareLogger.INFO_INT, formattedMessage, null); + } else { + logger.info(marker, format, arg); + } + } + + /** + * Delegate to the appropriate method of the underlying logger. + */ + public void info(Marker marker, String format, Object arg1, Object arg2) { + if (!logger.isInfoEnabled()) + return; + if (instanceofLAL) { + String formattedMessage = MessageFormatter.format(format, arg1, arg2); + ((LocationAwareLogger) logger).log(marker, fqcn, + LocationAwareLogger.INFO_INT, formattedMessage, null); + } else { + logger.info(marker, format, arg1, arg2); + } + } + + /** + * Delegate to the appropriate method of the underlying logger. + */ + public void info(Marker marker, String format, Object[] argArray) { + if (!logger.isInfoEnabled()) + return; + if (instanceofLAL) { + String formattedMessage = MessageFormatter.arrayFormat(format, argArray); + ((LocationAwareLogger) logger).log(marker, fqcn, + LocationAwareLogger.INFO_INT, formattedMessage, null); + } else { + logger.info(marker, format, argArray); + } + } + + /** + * Delegate to the appropriate method of the underlying logger. + */ + public void info(Marker marker, String msg, Throwable t) { + if (!logger.isInfoEnabled()) + return; + if (instanceofLAL) { + ((LocationAwareLogger) logger).log(marker, fqcn, + LocationAwareLogger.INFO_INT, msg, t); + } else { + logger.info(marker, msg, t); + } + } + + public boolean isWarnEnabled() { + return logger.isWarnEnabled(); + } + + /** + * Delegate to the appropriate method of the underlying logger. + */ + public boolean isWarnEnabled(Marker marker) { + return logger.isWarnEnabled(marker); + } + + /** + * Delegate to the appropriate method of the underlying logger. + */ + public void warn(String msg) { + if (!logger.isWarnEnabled()) + return; + + if (instanceofLAL) { + ((LocationAwareLogger) logger).log(null, fqcn, + LocationAwareLogger.WARN_INT, msg, null); + } else { + logger.warn(msg); + } + } + + /** + * Delegate to the appropriate method of the underlying logger. + */ + public void warn(String format, Object arg) { + if (!logger.isWarnEnabled()) + return; + + if (instanceofLAL) { + String formattedMessage = MessageFormatter.format(format, arg); + ((LocationAwareLogger) logger).log(null, fqcn, + LocationAwareLogger.WARN_INT, formattedMessage, null); + } else { + logger.warn(format, arg); + } + } + + /** + * Delegate to the appropriate method of the underlying logger. + */ + public void warn(String format, Object arg1, Object arg2) { + if (!logger.isWarnEnabled()) + return; + + if (instanceofLAL) { + String formattedMessage = MessageFormatter.format(format, arg1, arg2); + ((LocationAwareLogger) logger).log(null, fqcn, + LocationAwareLogger.WARN_INT, formattedMessage, null); + } else { + logger.warn(format, arg1, arg2); + } + } + + /** + * Delegate to the appropriate method of the underlying logger. + */ + public void warn(String format, Object[] argArray) { + if (!logger.isWarnEnabled()) + return; + + if (instanceofLAL) { + String formattedMessage = MessageFormatter.arrayFormat(format, argArray); + ((LocationAwareLogger) logger).log(null, fqcn, + LocationAwareLogger.WARN_INT, formattedMessage, null); + } else { + logger.warn(format, argArray); + } + } + + /** + * Delegate to the appropriate method of the underlying logger. + */ + public void warn(String msg, Throwable t) { + if (!logger.isWarnEnabled()) + return; + + if (instanceofLAL) { + ((LocationAwareLogger) logger).log(null, fqcn, + LocationAwareLogger.WARN_INT, msg, t); + } else { + logger.warn(msg, t); + } + } + + /** + * Delegate to the appropriate method of the underlying logger. + */ + public void warn(Marker marker, String msg) { + if (!logger.isWarnEnabled()) + return; + if (instanceofLAL) { + ((LocationAwareLogger) logger).log(marker, fqcn, + LocationAwareLogger.WARN_INT, msg, null); + } else { + logger.warn(marker, msg); + } + } + + /** + * Delegate to the appropriate method of the underlying logger. + */ + public void warn(Marker marker, String format, Object arg) { + if (!logger.isWarnEnabled()) + return; + if (instanceofLAL) { + String formattedMessage = MessageFormatter.format(format, arg); + ((LocationAwareLogger) logger).log(marker, fqcn, + LocationAwareLogger.WARN_INT, formattedMessage, null); + } else { + logger.warn(marker, format, arg); + } + } + + /** + * Delegate to the appropriate method of the underlying logger. + */ + public void warn(Marker marker, String format, Object arg1, Object arg2) { + if (!logger.isWarnEnabled()) + return; + if (instanceofLAL) { + String formattedMessage = MessageFormatter.format(format, arg1, arg2); + ((LocationAwareLogger) logger).log(marker, fqcn, + LocationAwareLogger.WARN_INT, formattedMessage, null); + } else { + logger.warn(marker, format, arg1, arg2); + } + } + + /** + * Delegate to the appropriate method of the underlying logger. + */ + public void warn(Marker marker, String format, Object[] argArray) { + if (!logger.isWarnEnabled()) + return; + if (instanceofLAL) { + String formattedMessage = MessageFormatter.arrayFormat(format, argArray); + ((LocationAwareLogger) logger).log(marker, fqcn, + LocationAwareLogger.WARN_INT, formattedMessage, null); + } else { + logger.warn(marker, format, argArray); + } + } + + /** + * Delegate to the appropriate method of the underlying logger. + */ + public void warn(Marker marker, String msg, Throwable t) { + if (!logger.isWarnEnabled()) + return; + if (instanceofLAL) { + ((LocationAwareLogger) logger).log(marker, fqcn, + LocationAwareLogger.WARN_INT, msg, t); + } else { + logger.warn(marker, msg, t); + } + } + + /** + * Delegate to the appropriate method of the underlying logger. + */ + public boolean isErrorEnabled() { + return logger.isErrorEnabled(); + } + + /** + * Delegate to the appropriate method of the underlying logger. + */ + public boolean isErrorEnabled(Marker marker) { + return logger.isErrorEnabled(marker); + } + + /** + * Delegate to the appropriate method of the underlying logger. + */ + public void error(String msg) { + if (!logger.isErrorEnabled()) + return; + + if (instanceofLAL) { + ((LocationAwareLogger) logger).log(null, fqcn, + LocationAwareLogger.ERROR_INT, msg, null); + } else { + logger.error(msg); + } + } + + /** + * Delegate to the appropriate method of the underlying logger. + */ + public void error(String format, Object arg) { + if (!logger.isErrorEnabled()) + return; + + if (instanceofLAL) { + String formattedMessage = MessageFormatter.format(format, arg); + ((LocationAwareLogger) logger).log(null, fqcn, + LocationAwareLogger.ERROR_INT, formattedMessage, null); + } else { + logger.error(format, arg); + } + } + + /** + * Delegate to the appropriate method of the underlying logger. + */ + public void error(String format, Object arg1, Object arg2) { + if (!logger.isErrorEnabled()) + return; + + if (instanceofLAL) { + String formattedMessage = MessageFormatter.format(format, arg1, arg2); + ((LocationAwareLogger) logger).log(null, fqcn, + LocationAwareLogger.ERROR_INT, formattedMessage, null); + } else { + logger.error(format, arg1, arg2); + } + } + + /** + * Delegate to the appropriate method of the underlying logger. + */ + public void error(String format, Object[] argArray) { + if (!logger.isErrorEnabled()) + return; + + if (instanceofLAL) { + String formattedMessage = MessageFormatter.arrayFormat(format, argArray); + ((LocationAwareLogger) logger).log(null, fqcn, + LocationAwareLogger.ERROR_INT, formattedMessage, null); + } else { + logger.error(format, argArray); + } + } + + /** + * Delegate to the appropriate method of the underlying logger. + */ + public void error(String msg, Throwable t) { + if (!logger.isErrorEnabled()) + return; + + if (instanceofLAL) { + ((LocationAwareLogger) logger).log(null, fqcn, + LocationAwareLogger.ERROR_INT, msg, t); + } else { + logger.error(msg, t); + } + } + + /** + * Delegate to the appropriate method of the underlying logger. + */ + public void error(Marker marker, String msg) { + if (!logger.isErrorEnabled()) + return; + if (instanceofLAL) { + ((LocationAwareLogger) logger).log(marker, fqcn, + LocationAwareLogger.ERROR_INT, msg, null); + } else { + logger.error(marker, msg); + } + } + + /** + * Delegate to the appropriate method of the underlying logger. + */ + public void error(Marker marker, String format, Object arg) { + if (!logger.isErrorEnabled()) + return; + if (instanceofLAL) { + String formattedMessage = MessageFormatter.format(format, arg); + ((LocationAwareLogger) logger).log(marker, fqcn, + LocationAwareLogger.ERROR_INT, formattedMessage, null); + } else { + logger.error(marker, format, arg); + } + } + + /** + * Delegate to the appropriate method of the underlying logger. + */ + public void error(Marker marker, String format, Object arg1, Object arg2) { + if (!logger.isErrorEnabled()) + return; + if (instanceofLAL) { + String formattedMessage = MessageFormatter.format(format, arg1, arg2); + ((LocationAwareLogger) logger).log(marker, fqcn, + LocationAwareLogger.ERROR_INT, formattedMessage, null); + } else { + logger.error(marker, format, arg1, arg2); + } + } + + /** + * Delegate to the appropriate method of the underlying logger. + */ + public void error(Marker marker, String format, Object[] argArray) { + if (!logger.isErrorEnabled()) + return; + if (instanceofLAL) { + String formattedMessage = MessageFormatter.arrayFormat(format, argArray); + ((LocationAwareLogger) logger).log(marker, fqcn, + LocationAwareLogger.ERROR_INT, formattedMessage, null); + } else { + logger.error(marker, format, argArray); + } + } + + /** + * Delegate to the appropriate method of the underlying logger. + */ + public void error(Marker marker, String msg, Throwable t) { + if (!logger.isErrorEnabled()) + return; + if (instanceofLAL) { + ((LocationAwareLogger) logger).log(marker, fqcn, + LocationAwareLogger.ERROR_INT, msg, t); + } else { + logger.error(marker, msg, t); + } + } + + /** + * Delegate to the appropriate method of the underlying logger. + */ + public String getName() { + return logger.getName(); + } +} Modified: slf4j/trunk/slf4j-ext/src/main/java/org/slf4j/ext/XLogger.java ============================================================================== --- slf4j/trunk/slf4j-ext/src/main/java/org/slf4j/ext/XLogger.java (original) +++ slf4j/trunk/slf4j-ext/src/main/java/org/slf4j/ext/XLogger.java Wed Oct 1 18:20:09 2008 @@ -4,7 +4,6 @@ import org.slf4j.Marker; import org.slf4j.MarkerFactory; import org.slf4j.helpers.MessageFormatter; -import org.slf4j.helpers.NOPLogger; import org.slf4j.spi.LocationAwareLogger; /** @@ -14,7 +13,7 @@ * @author Ralph Goers * @author Ceki Gulcu */ -public class XLogger implements Logger { +public class XLogger extends LoggerWrapper implements Logger { private static final String FQCN = XLogger.class.getName(); static Marker FLOW_MARKER = MarkerFactory.getMarker("FLOW"); @@ -48,22 +47,14 @@ ENTRY_MESSAGE_ARRAY[4] = ENTRY_MESSAGE_4; } - final Logger logger; - /** * Given an underlying logger, constuct an XLogger * - * @param logger underlying logger + * @param logger + * underlying logger */ public XLogger(Logger logger) { - - if (logger instanceof LocationAwareLogger) { - this.logger = logger; - } else { - // if the logger is not location aware, assume that - // there is no point in further effort - this.logger = NOPLogger.NOP_LOGGER; - } + super(logger, FQCN); } /** @@ -73,7 +64,7 @@ * supplied parameters */ public void entry(Object... argArray) { - if (logger.isTraceEnabled(ENTRY_MARKER)) { + if (instanceofLAL && logger.isTraceEnabled(ENTRY_MARKER)) { String messagePattern = null; if (argArray.length <= ENTRY_MESSAGE_ARRAY_LEN) { messagePattern = ENTRY_MESSAGE_ARRAY[argArray.length]; @@ -91,7 +82,7 @@ * Log method exit */ public void exit() { - if (logger.isTraceEnabled(ENTRY_MARKER)) { + if (instanceofLAL && logger.isTraceEnabled(ENTRY_MARKER)) { ((LocationAwareLogger) logger).log(EXIT_MARKER, FQCN, LocationAwareLogger.TRACE_INT, EXIT_MESSAGE_0, null); } @@ -104,7 +95,7 @@ * The result of the method being exited */ public void exit(Object result) { - if (logger.isTraceEnabled(ENTRY_MARKER)) { + if (instanceofLAL && logger.isTraceEnabled(ENTRY_MARKER)) { String formattedMessage = MessageFormatter.format(EXIT_MESSAGE_0, result); ((LocationAwareLogger) logger).log(EXIT_MARKER, FQCN, LocationAwareLogger.TRACE_INT, formattedMessage, null); @@ -118,8 +109,10 @@ * the exception being caught. */ public void throwing(Throwable throwable) { - ((LocationAwareLogger) logger).log(THROWING_MARKER, FQCN, - LocationAwareLogger.ERROR_INT, "throwing", throwable); + if (instanceofLAL) { + ((LocationAwareLogger) logger).log(THROWING_MARKER, FQCN, + LocationAwareLogger.ERROR_INT, "throwing", throwable); + } } /** @@ -129,8 +122,10 @@ * the exception being caught. */ public void catching(Throwable throwable) { - ((LocationAwareLogger) logger).log(CATCHING_MARKER, FQCN, - LocationAwareLogger.ERROR_INT, "catching", throwable); + if (instanceofLAL) { + ((LocationAwareLogger) logger).log(CATCHING_MARKER, FQCN, + LocationAwareLogger.ERROR_INT, "catching", throwable); + } } private static String buildMessagePattern(int len) { @@ -144,440 +139,4 @@ sb.append(')'); return sb.toString(); } - - // ===================================== - // org.slf4j.Logger methods - // ===================================== - - /** - * Delegate to the appropriate method of the underlying logger. - */ - public boolean isTraceEnabled() { - return logger.isTraceEnabled(); - } - - /** - * Delegate to the appropriate method of the underlying logger. - */ - public boolean isTraceEnabled(Marker marker) { - return logger.isTraceEnabled(marker); - } - - /** - * Delegate to the appropriate method of the underlying logger. - */ - public void trace(String msg) { - logger.trace(msg); - } - - /** - * Delegate to the appropriate method of the underlying logger. - */ - public void trace(String format, Object arg) { - logger.trace(format, arg); - } - - /** - * Delegate to the appropriate method of the underlying logger. - */ - public void trace(String format, Object arg1, Object arg2) { - logger.trace(format, arg1, arg2); - } - - /** - * Delegate to the appropriate method of the underlying logger. - */ - public void trace(String format, Object[] argArray) { - logger.trace(format, argArray); - } - - /** - * Delegate to the appropriate method of the underlying logger. - */ - public void trace(String msg, Throwable t) { - logger.trace(msg, t); - } - - /** - * Delegate to the appropriate method of the underlying logger. - */ - public void trace(Marker marker, String msg) { - logger.trace(marker, msg); - } - - /** - * Delegate to the appropriate method of the underlying logger. - */ - public void trace(Marker marker, String format, Object arg) { - logger.trace(marker, format, arg); - } - - /** - * Delegate to the appropriate method of the underlying logger. - */ - public void trace(Marker marker, String format, Object arg1, Object arg2) { - logger.trace(marker, format, arg1, arg2); - } - - /** - * Delegate to the appropriate method of the underlying logger. - */ - public void trace(Marker marker, String format, Object[] argArray) { - logger.trace(marker, format, argArray); - } - - /** - * Delegate to the appropriate method of the underlying logger. - */ - public void trace(Marker marker, String msg, Throwable t) { - logger.trace(marker, msg, t); - } - - /** - * Delegate to the appropriate method of the underlying logger. - */ - public boolean isDebugEnabled() { - return logger.isDebugEnabled(); - } - - /** - * Delegate to the appropriate method of the underlying logger. - */ - public boolean isDebugEnabled(Marker marker) { - return logger.isDebugEnabled(marker); - } - - /** - * Delegate to the appropriate method of the underlying logger. - */ - public void debug(String msg) { - logger.debug(msg); - } - - /** - * Delegate to the appropriate method of the underlying logger. - */ - public void debug(String format, Object arg) { - logger.debug(format, arg); - } - - /** - * Delegate to the appropriate method of the underlying logger. - */ - public void debug(String format, Object arg1, Object arg2) { - logger.debug(format, arg1, arg2); - } - - /** - * Delegate to the appropriate method of the underlying logger. - */ - public void debug(String format, Object[] argArray) { - logger.debug(format, argArray); - } - - /** - * Delegate to the appropriate method of the underlying logger. - */ - public void debug(String msg, Throwable t) { - logger.debug(msg, t); - } - - /** - * Delegate to the appropriate method of the underlying logger. - */ - public void debug(Marker marker, String msg) { - logger.debug(marker, msg); - } - - /** - * Delegate to the appropriate method of the underlying logger. - */ - public void debug(Marker marker, String format, Object arg) { - logger.debug(marker, format, arg); - } - - /** - * Delegate to the appropriate method of the underlying logger. - */ - public void debug(Marker marker, String format, Object arg1, Object arg2) { - logger.debug(marker, format, arg1, arg2); - } - - /** - * Delegate to the appropriate method of the underlying logger. - */ - public void debug(Marker marker, String format, Object[] argArray) { - logger.debug(marker, format, argArray); - } - - /** - * Delegate to the appropriate method of the underlying logger. - */ - public void debug(Marker marker, String msg, Throwable t) { - logger.debug(marker, msg, t); - } - - /** - * Delegate to the appropriate method of the underlying logger. - */ - public boolean isInfoEnabled() { - return logger.isInfoEnabled(); - } - - /** - * Delegate to the appropriate method of the underlying logger. - */ - public boolean isInfoEnabled(Marker marker) { - return logger.isInfoEnabled(marker); - } - - /** - * Delegate to the appropriate method of the underlying logger. - */ - public void info(String msg) { - logger.info(msg); - } - - /** - * Delegate to the appropriate method of the underlying logger. - */ - public void info(String format, Object arg) { - logger.info(format, arg); - } - - /** - * Delegate to the appropriate method of the underlying logger. - */ - public void info(String format, Object arg1, Object arg2) { - logger.info(format, arg1, arg2); - } - - /** - * Delegate to the appropriate method of the underlying logger. - */ - public void info(String format, Object[] argArray) { - logger.info(format, argArray); - } - - /** - * Delegate to the appropriate method of the underlying logger. - */ - public void info(String msg, Throwable t) { - logger.info(msg, t); - } - - /** - * Delegate to the appropriate method of the underlying logger. - */ - public void info(Marker marker, String msg) { - logger.info(marker, msg); - } - - /** - * Delegate to the appropriate method of the underlying logger. - */ - public void info(Marker marker, String format, Object arg) { - logger.info(marker, format, arg); - } - - /** - * Delegate to the appropriate method of the underlying logger. - */ - public void info(Marker marker, String format, Object arg1, Object arg2) { - logger.info(marker, format, arg1, arg2); - } - - /** - * Delegate to the appropriate method of the underlying logger. - */ - public void info(Marker marker, String format, Object[] argArray) { - logger.info(marker, format, argArray); - } - - /** - * Delegate to the appropriate method of the underlying logger. - */ - public void info(Marker marker, String msg, Throwable t) { - logger.info(marker, msg, t); - } - - public boolean isWarnEnabled() { - return logger.isWarnEnabled(); - } - - /** - * Delegate to the appropriate method of the underlying logger. - */ - public boolean isWarnEnabled(Marker marker) { - return logger.isWarnEnabled(marker); - } - - /** - * Delegate to the appropriate method of the underlying logger. - */ - public void warn(String msg) { - logger.warn(msg); - } - - /** - * Delegate to the appropriate method of the underlying logger. - */ - public void warn(String format, Object arg) { - logger.warn(format, arg); - } - - /** - * Delegate to the appropriate method of the underlying logger. - */ - public void warn(String format, Object arg1, Object arg2) { - logger.warn(format, arg1, arg2); - } - - /** - * Delegate to the appropriate method of the underlying logger. - */ - public void warn(String format, Object[] argArray) { - logger.warn(format, argArray); - } - - /** - * Delegate to the appropriate method of the underlying logger. - */ - public void warn(String msg, Throwable t) { - logger.warn(msg, t); - } - - /** - * Delegate to the appropriate method of the underlying logger. - */ - public void warn(Marker marker, String msg) { - logger.warn(marker, msg); - } - - /** - * Delegate to the appropriate method of the underlying logger. - */ - public void warn(Marker marker, String format, Object arg) { - logger.warn(marker, format, arg); - } - - /** - * Delegate to the appropriate method of the underlying logger. - */ - public void warn(Marker marker, String format, Object arg1, Object arg2) { - logger.warn(marker, format, arg1, arg2); - } - - /** - * Delegate to the appropriate method of the underlying logger. - */ - public void warn(Marker marker, String format, Object[] argArray) { - logger.warn(marker, format, argArray); - } - - /** - * Delegate to the appropriate method of the underlying logger. - */ - public void warn(Marker marker, String msg, Throwable t) { - logger.warn(marker, msg, t); - } - - /** - * Delegate to the appropriate method of the underlying logger. - */ - public boolean isErrorEnabled() { - return logger.isErrorEnabled(); - } - - /** - * Delegate to the appropriate method of the underlying logger. - */ - public boolean isErrorEnabled(Marker marker) { - return logger.isErrorEnabled(marker); - } - - /** - * Delegate to the appropriate method of the underlying logger. - */ - public void error(String msg) { - logger.error(msg); - } - - /** - * Delegate to the appropriate method of the underlying logger. - */ - public void error(String format, Object arg) { - logger.error(format, arg); - } - - /** - * Delegate to the appropriate method of the underlying logger. - */ - public void errot(String format, Object arg1, Object arg2) { - logger.error(format, arg1, arg2); - } - - /** - * Delegate to the appropriate method of the underlying logger. - */ - public void error(String format, Object[] argArray) { - logger.error(format, argArray); - } - - /** - * Delegate to the appropriate method of the underlying logger. - */ - public void error(String msg, Throwable t) { - logger.error(msg, t); - } - - /** - * Delegate to the appropriate method of the underlying logger. - */ - public void error(Marker marker, String msg) { - logger.error(marker, msg); - } - - /** - * Delegate to the appropriate method of the underlying logger. - */ - public void error(Marker marker, String format, Object arg) { - logger.error(marker, format, arg); - } - - /** - * Delegate to the appropriate method of the underlying logger. - */ - public void error(String format, Object arg1, Object arg2) { - logger.error(format, arg1, arg2); - } - - /** - * Delegate to the appropriate method of the underlying logger. - */ - public void error(Marker marker, String format, Object arg1, Object arg2) { - logger.error(marker, format, arg1, arg2); - } - - /** - * Delegate to the appropriate method of the underlying logger. - */ - public void error(Marker marker, String format, Object[] argArray) { - logger.error(marker, format, argArray); - } - - /** - * Delegate to the appropriate method of the underlying logger. - */ - public void error(Marker marker, String msg, Throwable t) { - logger.error(marker, msg, t); - } - - /** - * Delegate to the appropriate method of the underlying logger. - */ - public String getName() { - return logger.getName(); - } - } Added: slf4j/trunk/slf4j-ext/src/main/java/org/slf4j/ext/XLoggerFactory.java ============================================================================== --- (empty file) +++ slf4j/trunk/slf4j-ext/src/main/java/org/slf4j/ext/XLoggerFactory.java Wed Oct 1 18:20:09 2008 @@ -0,0 +1,30 @@ +package org.slf4j.ext; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * + * This class is essentially a wrapper around an + * [EMAIL PROTECTED] LoggerFactory} producing [EMAIL PROTECTED] XLogger} instances. + * + * <p>Contrary to [EMAIL PROTECTED] LoggerFactory#getLogger(String)} method of + * [EMAIL PROTECTED] LoggerFactory}, each call to [EMAIL PROTECTED] getXLogger} + * produces a new instance of XLogger. This should not matter because an + * XLogger instance does not have any state beyond that of the Logger instance + * it wraps. + * + * @author Ralph Goers + * @author Ceki Gulcu + */ +public class XLoggerFactory { + + public static XLogger getXLogger(String name) { + return new XLogger(LoggerFactory.getLogger(name)); + } + + @SuppressWarnings("unchecked") + public static Logger getXLogger(Class clazz) { + return getXLogger(clazz.getName()); + } +} _______________________________________________ dev mailing list dev@slf4j.org http://www.slf4j.org/mailman/listinfo/dev