diff --git a/jcl-over-slf4j/src/main/java/module-info.java b/jcl-over-slf4j/src/main/java/module-info.java new file mode 100755 index 00000000..73a54f81 --- /dev/null +++ b/jcl-over-slf4j/src/main/java/module-info.java @@ -0,0 +1,4 @@ +module org.slf4j.jcl_over_slf4j { + requires org.slf4j; + exports org.apache.commons.logging; +} diff --git a/jcl-over-slf4j/src/main/java/org/apache/commons/logging/impl/SLF4JLocationAwareLog.java b/jcl-over-slf4j/src/main/java/org/apache/commons/logging/impl/SLF4JLocationAwareLog.java index ef48be67..6e856870 100644 --- a/jcl-over-slf4j/src/main/java/org/apache/commons/logging/impl/SLF4JLocationAwareLog.java +++ b/jcl-over-slf4j/src/main/java/org/apache/commons/logging/impl/SLF4JLocationAwareLog.java @@ -47,7 +47,7 @@ public class SLF4JLocationAwareLog implements Log, Serializable { private static final String FQCN = SLF4JLocationAwareLog.class.getName(); - SLF4JLocationAwareLog(LocationAwareLogger logger) { + public SLF4JLocationAwareLog(LocationAwareLogger logger) { this.logger = logger; this.name = logger.getName(); } diff --git a/jcl-over-slf4j/src/main/java/org/apache/commons/logging/impl/SLF4JLog.java b/jcl-over-slf4j/src/main/java/org/apache/commons/logging/impl/SLF4JLog.java index 5ee59f7b..f986f472 100644 --- a/jcl-over-slf4j/src/main/java/org/apache/commons/logging/impl/SLF4JLog.java +++ b/jcl-over-slf4j/src/main/java/org/apache/commons/logging/impl/SLF4JLog.java @@ -44,7 +44,7 @@ public class SLF4JLog implements Log, Serializable { // logger instance is transient private transient Logger logger; - SLF4JLog(Logger logger) { + public SLF4JLog(Logger logger) { this.logger = logger; this.name = logger.getName(); } diff --git a/jcl-over-slf4j/src/test/java/org/apache/commons/logging/InvokeJCLTest.java b/jcl-over-slf4j/src/test/java/org/apache/commons/logging/test/InvokeJCLTest.java similarity index 95% rename from jcl-over-slf4j/src/test/java/org/apache/commons/logging/InvokeJCLTest.java rename to jcl-over-slf4j/src/test/java/org/apache/commons/logging/test/InvokeJCLTest.java index 1cef2160..ee9291f8 100644 --- a/jcl-over-slf4j/src/test/java/org/apache/commons/logging/InvokeJCLTest.java +++ b/jcl-over-slf4j/src/test/java/org/apache/commons/logging/test/InvokeJCLTest.java @@ -23,11 +23,14 @@ * */ -package org.apache.commons.logging; +package org.apache.commons.logging.test; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + import org.junit.Test; public class InvokeJCLTest { diff --git a/jcl-over-slf4j/src/test/java/org/apache/commons/logging/impl/SerializationTest.java b/jcl-over-slf4j/src/test/java/org/apache/commons/logging/test/SerializationTest.java similarity index 93% rename from jcl-over-slf4j/src/test/java/org/apache/commons/logging/impl/SerializationTest.java rename to jcl-over-slf4j/src/test/java/org/apache/commons/logging/test/SerializationTest.java index 4b67861b..3ca0b9ac 100644 --- a/jcl-over-slf4j/src/test/java/org/apache/commons/logging/impl/SerializationTest.java +++ b/jcl-over-slf4j/src/test/java/org/apache/commons/logging/test/SerializationTest.java @@ -22,7 +22,7 @@ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ -package org.apache.commons.logging.impl; +package org.apache.commons.logging.test; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; @@ -32,10 +32,12 @@ import java.io.ObjectOutputStream; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.commons.logging.impl.SLF4JLocationAwareLog; +import org.apache.commons.logging.impl.SLF4JLog; import org.junit.After; import org.junit.Before; import org.junit.Test; -import org.slf4j.impl.JDK14LoggerFactory; +import org.slf4j.jul.JDK14LoggerFactory; import org.slf4j.spi.LocationAwareLogger; public class SerializationTest { diff --git a/log4j-over-slf4j/src/main/java/module-info.java b/log4j-over-slf4j/src/main/java/module-info.java new file mode 100755 index 00000000..90398b7e --- /dev/null +++ b/log4j-over-slf4j/src/main/java/module-info.java @@ -0,0 +1,8 @@ +module org.slf4j.log4j_over_slf4j { + requires org.slf4j; + requires java.xml; + exports org.apache.log4j; + exports org.apache.log4j.helpers; + exports org.apache.log4j.spi; + exports org.apache.log4j.xml; +} \ No newline at end of file diff --git a/log4j-over-slf4j/src/main/java/org/apache/log4j/Priority.java b/log4j-over-slf4j/src/main/java/org/apache/log4j/Priority.java index bb4f8d4a..f0282634 100644 --- a/log4j-over-slf4j/src/main/java/org/apache/log4j/Priority.java +++ b/log4j-over-slf4j/src/main/java/org/apache/log4j/Priority.java @@ -48,21 +48,25 @@ public class Priority { /** * @deprecated Use {@link Level#ERROR} instead. */ + @Deprecated final static public Priority ERROR = new Level(ERROR_INT, "ERROR", 3); /** * @deprecated Use {@link Level#WARN} instead. */ + @Deprecated final static public Priority WARN = new Level(WARN_INT, "WARN", 4); /** * @deprecated Use {@link Level#INFO} instead. */ + @Deprecated final static public Priority INFO = new Level(INFO_INT, "INFO", 6); /** * @deprecated Use {@link Level#DEBUG} instead. */ + @Deprecated final static public Priority DEBUG = new Level(DEBUG_INT, "DEBUG", 7); /** @@ -122,6 +126,7 @@ public class Priority { @deprecated This method will be removed with no replacement. */ + @Deprecated public static Priority[] getAllPossiblePriorities() { return new Priority[] { Priority.FATAL, Priority.ERROR, Level.WARN, Priority.INFO, Priority.DEBUG }; } @@ -143,6 +148,7 @@ public class Priority { /** * @deprecated Please use the {@link Level#toLevel(String)} method instead. */ + @Deprecated public static Priority toPriority(String sArg) { return Level.toLevel(sArg); } @@ -150,6 +156,7 @@ public class Priority { /** * @deprecated Please use the {@link Level#toLevel(int)} method instead. */ + @Deprecated public static Priority toPriority(int val) { return toPriority(val, Priority.DEBUG); } @@ -157,6 +164,7 @@ public class Priority { /** * @deprecated Please use the {@link Level#toLevel(int, Level)} method instead. */ + @Deprecated public static Priority toPriority(int val, Priority defaultPriority) { return Level.toLevel(val, (Level) defaultPriority); } @@ -164,6 +172,7 @@ public class Priority { /** * @deprecated Please use the {@link Level#toLevel(String, Level)} method instead. */ + @Deprecated public static Priority toPriority(String sArg, Priority defaultPriority) { return Level.toLevel(sArg, (Level) defaultPriority); } diff --git a/pom.xml b/pom.xml index 3bb885f6..31fd3244 100755 --- a/pom.xml +++ b/pom.xml @@ -132,19 +132,6 @@ - - org.apache.maven.plugins - maven-toolchains-plugin - 1.1 - - - - toolchain - - - - - org.codehaus.mojo animal-sniffer-maven-plugin @@ -201,7 +188,7 @@ 2.19.1 2C - true + false plain false diff --git a/slf4j-api/src/main/java/org/slf4j/LoggerFactory.java b/slf4j-api/src/main/java/org/slf4j/LoggerFactory.java index d8628917..f068e804 100755 --- a/slf4j-api/src/main/java/org/slf4j/LoggerFactory.java +++ b/slf4j-api/src/main/java/org/slf4j/LoggerFactory.java @@ -149,8 +149,9 @@ public final class LoggerFactory { List providersList = findServiceProviders(); reportMultipleBindingAmbiguity(providersList); if (providersList != null && !providersList.isEmpty()) { - PROVIDER = providersList.get(0); - INITIALIZATION_STATE = SUCCESSFUL_INITIALIZATION; + PROVIDER = providersList.get(0); + PROVIDER.initialize(); + INITIALIZATION_STATE = SUCCESSFUL_INITIALIZATION; reportActualBinding(providersList); fixSubstituteLoggers(); replayEvents(); diff --git a/slf4j-api/src/main/java/org/slf4j/LoggerFactoryFriend.java b/slf4j-api/src/main/java/org/slf4j/LoggerFactoryFriend.java new file mode 100755 index 00000000..8f80775b --- /dev/null +++ b/slf4j-api/src/main/java/org/slf4j/LoggerFactoryFriend.java @@ -0,0 +1,31 @@ +package org.slf4j; + +/** + * All methods in this class are reserved for internal use, for testing purposes. + *

+ *

They can can be modified, renamed or removed at any time without notice. + *

+ * You are strongly discouraged calling any of the methods of this class. + * + * @since 1.8.0 + * + * @author Ceki Gülcü + */ +public class LoggerFactoryFriend { + + /* + * Force LoggerFactory to consider itself uninitialized.

+ */ + static public void reset() { + LoggerFactory.reset(); + } + + /** + * Set LoggerFactory.DETECT_LOGGER_NAME_MISMATCH variable. + * + * @param enabled + */ + public static void setDetectLoggerNameMismatch(boolean enabled) { + LoggerFactory.DETECT_LOGGER_NAME_MISMATCH = enabled; + } +} diff --git a/slf4j-api/src/main/java/org/slf4j/MarkerFactory.java b/slf4j-api/src/main/java/org/slf4j/MarkerFactory.java index 15ab2825..8c344faa 100644 --- a/slf4j-api/src/main/java/org/slf4j/MarkerFactory.java +++ b/slf4j-api/src/main/java/org/slf4j/MarkerFactory.java @@ -52,6 +52,7 @@ public class MarkerFactory { static { SLF4JServiceProvider provider = LoggerFactory.getProvider(); if (provider != null) { + provider.initialize(); MARKER_FACTORY = provider.getMarkerFactory(); } else { Util.report("Failed to find provider"); diff --git a/slf4j-api/src/main/java/org/slf4j/helpers/NOPServiceProvider.java b/slf4j-api/src/main/java/org/slf4j/helpers/NOPServiceProvider.java index 6c3419fa..1c1edc0f 100755 --- a/slf4j-api/src/main/java/org/slf4j/helpers/NOPServiceProvider.java +++ b/slf4j-api/src/main/java/org/slf4j/helpers/NOPServiceProvider.java @@ -2,39 +2,40 @@ package org.slf4j.helpers; import org.slf4j.ILoggerFactory; import org.slf4j.IMarkerFactory; -import org.slf4j.helpers.BasicMarkerFactory; -import org.slf4j.helpers.NOPLoggerFactory; -import org.slf4j.helpers.NOPMDCAdapter; import org.slf4j.spi.MDCAdapter; import org.slf4j.spi.SLF4JServiceProvider; public class NOPServiceProvider implements SLF4JServiceProvider { - /** - * Declare the version of the SLF4J API this implementation is compiled against. - * The value of this field is modified with each major release. - */ - // to avoid constant folding by the compiler, this field must *not* be final - public static String REQUESTED_API_VERSION = "1.8.99"; // !final + /** + * Declare the version of the SLF4J API this implementation is compiled + * against. The value of this field is modified with each major release. + */ + // to avoid constant folding by the compiler, this field must *not* be final + public static String REQUESTED_API_VERSION = "1.8.99"; // !final - private ILoggerFactory loggerFactory = new NOPLoggerFactory(); - private IMarkerFactory markerFactory = new BasicMarkerFactory(); - private MDCAdapter mdcAdapter = new NOPMDCAdapter(); - - public ILoggerFactory getLoggerFactory() { - return loggerFactory; - } + private ILoggerFactory loggerFactory = new NOPLoggerFactory(); + private IMarkerFactory markerFactory = new BasicMarkerFactory(); + private MDCAdapter mdcAdapter = new NOPMDCAdapter(); - public IMarkerFactory getMarkerFactory() { - return markerFactory; - } + public ILoggerFactory getLoggerFactory() { + return loggerFactory; + } - public MDCAdapter getMDCAdapter() { - return mdcAdapter; - } + public IMarkerFactory getMarkerFactory() { + return markerFactory; + } - public String getRequesteApiVersion() { - return REQUESTED_API_VERSION; - } + public MDCAdapter getMDCAdapter() { + return mdcAdapter; + } + public String getRequesteApiVersion() { + return REQUESTED_API_VERSION; + } + + @Override + public void initialize() { + // already initialized + } } diff --git a/slf4j-api/src/main/java/org/slf4j/helpers/SubstitureServiceProvider.java b/slf4j-api/src/main/java/org/slf4j/helpers/SubstitureServiceProvider.java index 78af4e1f..23abc1b1 100755 --- a/slf4j-api/src/main/java/org/slf4j/helpers/SubstitureServiceProvider.java +++ b/slf4j-api/src/main/java/org/slf4j/helpers/SubstitureServiceProvider.java @@ -9,7 +9,8 @@ public class SubstitureServiceProvider implements SLF4JServiceProvider { private SubstituteLoggerFactory loggerFactory = new SubstituteLoggerFactory(); private IMarkerFactory markerFactory = new BasicMarkerFactory(); private MDCAdapter mdcAdapter = new BasicMDCAdapter(); - + + @Override public ILoggerFactory getLoggerFactory() { return loggerFactory; } @@ -18,16 +19,25 @@ public class SubstitureServiceProvider implements SLF4JServiceProvider { return loggerFactory; } - + @Override public IMarkerFactory getMarkerFactory() { return markerFactory; } + + @Override public MDCAdapter getMDCAdapter() { return mdcAdapter; } + + @Override public String getRequesteApiVersion() { throw new UnsupportedOperationException(); } + + @Override + public void initialize() { + + } } diff --git a/slf4j-api/src/main/java/org/slf4j/helpers/SubstituteLogger.java b/slf4j-api/src/main/java/org/slf4j/helpers/SubstituteLogger.java index 3ac0d32b..e0d3e613 100644 --- a/slf4j-api/src/main/java/org/slf4j/helpers/SubstituteLogger.java +++ b/slf4j-api/src/main/java/org/slf4j/helpers/SubstituteLogger.java @@ -329,7 +329,7 @@ public class SubstituteLogger implements Logger { * Return the delegate logger instance if set. Otherwise, return a {@link NOPLogger} * instance. */ - Logger delegate() { + public Logger delegate() { if(_delegate != null) { return _delegate; } diff --git a/slf4j-api/src/main/java/org/slf4j/spi/SLF4JServiceProvider.java b/slf4j-api/src/main/java/org/slf4j/spi/SLF4JServiceProvider.java index 5d5614a8..60052ef0 100755 --- a/slf4j-api/src/main/java/org/slf4j/spi/SLF4JServiceProvider.java +++ b/slf4j-api/src/main/java/org/slf4j/spi/SLF4JServiceProvider.java @@ -29,4 +29,5 @@ public interface SLF4JServiceProvider { public String getRequesteApiVersion(); + public void initialize(); } diff --git a/slf4j-api/src/test/java/org/slf4j/helpers/MultithreadedInitializationTest.java b/slf4j-api/src/test/java/org/slf4j/testHarness/MultithreadedInitializationTest.java similarity index 97% rename from slf4j-api/src/test/java/org/slf4j/helpers/MultithreadedInitializationTest.java rename to slf4j-api/src/test/java/org/slf4j/testHarness/MultithreadedInitializationTest.java index 7c920a0a..d2225c85 100644 --- a/slf4j-api/src/test/java/org/slf4j/helpers/MultithreadedInitializationTest.java +++ b/slf4j-api/src/test/java/org/slf4j/testHarness/MultithreadedInitializationTest.java @@ -1,4 +1,4 @@ -package org.slf4j.helpers; +package org.slf4j.testHarness; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; @@ -16,6 +16,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerAccessingThread; import org.slf4j.LoggerFactory; import org.slf4j.event.EventRecodingLogger; +import org.slf4j.helpers.SubstituteLogger; abstract public class MultithreadedInitializationTest { final protected static int THREAD_COUNT = 4 + Runtime.getRuntime().availableProcessors() * 2; diff --git a/slf4j-jdk14/src/main/java/module-info.java b/slf4j-jdk14/src/main/java/module-info.java index ffa04093..9fd93411 100755 --- a/slf4j-jdk14/src/main/java/module-info.java +++ b/slf4j-jdk14/src/main/java/module-info.java @@ -1,5 +1,7 @@ -module org.slf4j.jdk14 { +module org.slf4j.jul { requires org.slf4j; - requires org.slf4j.spi; - provides org.slf4j.spi.SLF4JServiceProvider with org.slf4j.impl.JULServiceProvider; + requires java.logging; + exports org.slf4j.jul; + provides org.slf4j.spi.SLF4JServiceProvider with org.slf4j.jul.JULServiceProvider; } + diff --git a/slf4j-jdk14/src/main/java/org/slf4j/impl/StaticLoggerBinder.java b/slf4j-jdk14/src/main/java/org/slf4j/impl/StaticLoggerBinder.java index 16707dd1..71ee30f4 100644 --- a/slf4j-jdk14/src/main/java/org/slf4j/impl/StaticLoggerBinder.java +++ b/slf4j-jdk14/src/main/java/org/slf4j/impl/StaticLoggerBinder.java @@ -25,6 +25,7 @@ package org.slf4j.impl; import org.slf4j.ILoggerFactory; +import org.slf4j.jul.JDK14LoggerFactory; import org.slf4j.spi.LoggerFactoryBinder; /** @@ -60,7 +61,7 @@ public class StaticLoggerBinder implements LoggerFactoryBinder { // to avoid constant folding by the compiler, this field must *not* be final public static String REQUESTED_API_VERSION = "1.6.99"; // !final - private static final String loggerFactoryClassStr = org.slf4j.impl.JDK14LoggerFactory.class.getName(); + private static final String LOGGER_FACTORY_CLASS_STR = JDK14LoggerFactory.class.getName(); /** The ILoggerFactory instance returned by the {@link #getLoggerFactory} method * should always be the same object @@ -68,8 +69,7 @@ public class StaticLoggerBinder implements LoggerFactoryBinder { private final ILoggerFactory loggerFactory; private StaticLoggerBinder() { - // Note: JCL gets substituted at build time by an appropriate Ant task - loggerFactory = new org.slf4j.impl.JDK14LoggerFactory(); + loggerFactory = new JDK14LoggerFactory(); } public ILoggerFactory getLoggerFactory() { @@ -77,6 +77,6 @@ public class StaticLoggerBinder implements LoggerFactoryBinder { } public String getLoggerFactoryClassStr() { - return loggerFactoryClassStr; + return LOGGER_FACTORY_CLASS_STR; } } diff --git a/slf4j-jdk14/src/main/java/org/slf4j/impl/JDK14LoggerAdapter.java b/slf4j-jdk14/src/main/java/org/slf4j/jul/JDK14LoggerAdapter.java similarity index 99% rename from slf4j-jdk14/src/main/java/org/slf4j/impl/JDK14LoggerAdapter.java rename to slf4j-jdk14/src/main/java/org/slf4j/jul/JDK14LoggerAdapter.java index 1fb20225..d392399c 100755 --- a/slf4j-jdk14/src/main/java/org/slf4j/impl/JDK14LoggerAdapter.java +++ b/slf4j-jdk14/src/main/java/org/slf4j/jul/JDK14LoggerAdapter.java @@ -22,7 +22,7 @@ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ -package org.slf4j.impl; +package org.slf4j.jul; import java.util.logging.Level; import java.util.logging.LogRecord; diff --git a/slf4j-jdk14/src/main/java/org/slf4j/impl/JDK14LoggerFactory.java b/slf4j-jdk14/src/main/java/org/slf4j/jul/JDK14LoggerFactory.java similarity index 99% rename from slf4j-jdk14/src/main/java/org/slf4j/impl/JDK14LoggerFactory.java rename to slf4j-jdk14/src/main/java/org/slf4j/jul/JDK14LoggerFactory.java index e9076524..073c525a 100644 --- a/slf4j-jdk14/src/main/java/org/slf4j/impl/JDK14LoggerFactory.java +++ b/slf4j-jdk14/src/main/java/org/slf4j/jul/JDK14LoggerFactory.java @@ -22,7 +22,7 @@ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ -package org.slf4j.impl; +package org.slf4j.jul; import org.slf4j.Logger; import org.slf4j.ILoggerFactory; diff --git a/slf4j-jdk14/src/main/java/org/slf4j/jul/JULServiceProvider.java b/slf4j-jdk14/src/main/java/org/slf4j/jul/JULServiceProvider.java new file mode 100755 index 00000000..b12b2315 --- /dev/null +++ b/slf4j-jdk14/src/main/java/org/slf4j/jul/JULServiceProvider.java @@ -0,0 +1,44 @@ +package org.slf4j.jul; + +import org.slf4j.ILoggerFactory; +import org.slf4j.IMarkerFactory; +import org.slf4j.helpers.BasicMDCAdapter; +import org.slf4j.helpers.BasicMarkerFactory; +import org.slf4j.spi.MDCAdapter; +import org.slf4j.spi.SLF4JServiceProvider; + +public class JULServiceProvider implements SLF4JServiceProvider { + + /** + * Declare the version of the SLF4J API this implementation is compiled + * against. The value of this field is modified with each major release. + */ + // to avoid constant folding by the compiler, this field must *not* be final + public static String REQUESTED_API_VERSION = "1.8.99"; // !final + + private ILoggerFactory loggerFactory; + private IMarkerFactory markerFactory; + private MDCAdapter mdcAdapter; + + public ILoggerFactory getLoggerFactory() { + return loggerFactory; + } + + public IMarkerFactory getMarkerFactory() { + return markerFactory; + } + + public MDCAdapter getMDCAdapter() { + return mdcAdapter; + } + + public String getRequesteApiVersion() { + return REQUESTED_API_VERSION; + } + + public void initialize() { + loggerFactory = new JDK14LoggerFactory(); + markerFactory = new BasicMarkerFactory(); + mdcAdapter = new BasicMDCAdapter(); + } +} diff --git a/slf4j-jdk14/src/main/resources/META-INF/MANIFEST.MF b/slf4j-jdk14/src/main/resources/META-INF/MANIFEST.MF index 6d2910e7..1d85e334 100755 --- a/slf4j-jdk14/src/main/resources/META-INF/MANIFEST.MF +++ b/slf4j-jdk14/src/main/resources/META-INF/MANIFEST.MF @@ -4,7 +4,7 @@ Bundle-SymbolicName: slf4j.jdk14 Bundle-Name: slf4j-jdk14 Bundle-Vendor: SLF4J.ORG Bundle-RequiredExecutionEnvironment: J2SE-1.6 -Export-Package: org.slf4j.impl;version=${parsedVersion.osgiVersion} +Export-Package: org.slf4j.jul;version=${parsedVersion.osgiVersion} Import-Package: org.slf4j;version=${parsedVersion.osgiVersion}, org.slf4j.spi;version=${parsedVersion.osgiVersion}, org.slf4j.helpers;version=${parsedVersion.osgiVersion}, diff --git a/slf4j-jdk14/src/main/resources/META-INF/services/org.slf4j.spi.SLF4JServiceProvider b/slf4j-jdk14/src/main/resources/META-INF/services/org.slf4j.spi.SLF4JServiceProvider index 7c38097f..8d062b2f 100755 --- a/slf4j-jdk14/src/main/resources/META-INF/services/org.slf4j.spi.SLF4JServiceProvider +++ b/slf4j-jdk14/src/main/resources/META-INF/services/org.slf4j.spi.SLF4JServiceProvider @@ -1 +1 @@ -org.slf4j.impl.JULServiceProvider \ No newline at end of file +org.slf4j.jul.JULServiceProvider \ No newline at end of file diff --git a/slf4j-jdk14/src/test/java/org/slf4j/LoggerFactoryFriend.java b/slf4j-jdk14/src/test/java/org/slf4j/LoggerFactoryFriend.java deleted file mode 100755 index 4398d3b2..00000000 --- a/slf4j-jdk14/src/test/java/org/slf4j/LoggerFactoryFriend.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.slf4j; - -public class LoggerFactoryFriend { - static public void reset() { - LoggerFactory.reset(); - } -} diff --git a/slf4j-jdk14/src/test/java/org/slf4j/helpers/CountingHandler.java b/slf4j-jdk14/src/test/java/org/slf4j/jul/CountingHandler.java similarity index 94% rename from slf4j-jdk14/src/test/java/org/slf4j/helpers/CountingHandler.java rename to slf4j-jdk14/src/test/java/org/slf4j/jul/CountingHandler.java index 7524b871..b9948173 100644 --- a/slf4j-jdk14/src/test/java/org/slf4j/helpers/CountingHandler.java +++ b/slf4j-jdk14/src/test/java/org/slf4j/jul/CountingHandler.java @@ -1,4 +1,4 @@ -package org.slf4j.helpers; +package org.slf4j.jul; import java.util.concurrent.atomic.AtomicLong; import java.util.logging.Handler; diff --git a/slf4j-jdk14/src/test/java/org/slf4j/InvocationTest.java b/slf4j-jdk14/src/test/java/org/slf4j/jul/InvocationTest.java similarity index 99% rename from slf4j-jdk14/src/test/java/org/slf4j/InvocationTest.java rename to slf4j-jdk14/src/test/java/org/slf4j/jul/InvocationTest.java index 3db5936a..c94e93f1 100755 --- a/slf4j-jdk14/src/test/java/org/slf4j/InvocationTest.java +++ b/slf4j-jdk14/src/test/java/org/slf4j/jul/InvocationTest.java @@ -22,12 +22,13 @@ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ -package org.slf4j; +package org.slf4j.jul; import org.junit.After; import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import org.slf4j.*; import java.util.ArrayList; import java.util.List; diff --git a/slf4j-jdk14/src/test/java/org/slf4j/impl/JDK14AdapterLoggerNameTest.java b/slf4j-jdk14/src/test/java/org/slf4j/jul/JDK14AdapterLoggerNameTest.java similarity index 98% rename from slf4j-jdk14/src/test/java/org/slf4j/impl/JDK14AdapterLoggerNameTest.java rename to slf4j-jdk14/src/test/java/org/slf4j/jul/JDK14AdapterLoggerNameTest.java index 118f5f84..5c29697e 100644 --- a/slf4j-jdk14/src/test/java/org/slf4j/impl/JDK14AdapterLoggerNameTest.java +++ b/slf4j-jdk14/src/test/java/org/slf4j/jul/JDK14AdapterLoggerNameTest.java @@ -22,7 +22,7 @@ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ -package org.slf4j.impl; +package org.slf4j.jul; import static org.junit.Assert.assertNotNull; @@ -34,6 +34,7 @@ import java.util.logging.Logger; import org.junit.After; import org.junit.Before; import org.junit.Test; +import org.slf4j.jul.JDK14LoggerFactory; public class JDK14AdapterLoggerNameTest { private MockHandler mockHandler; diff --git a/slf4j-jdk14/src/test/java/org/slf4j/helpers/JDK14MultithreadedInitializationTest.java b/slf4j-jdk14/src/test/java/org/slf4j/jul/JDK14MultithreadedInitializationTest.java similarity index 96% rename from slf4j-jdk14/src/test/java/org/slf4j/helpers/JDK14MultithreadedInitializationTest.java rename to slf4j-jdk14/src/test/java/org/slf4j/jul/JDK14MultithreadedInitializationTest.java index 6582a76e..18e3a08c 100644 --- a/slf4j-jdk14/src/test/java/org/slf4j/helpers/JDK14MultithreadedInitializationTest.java +++ b/slf4j-jdk14/src/test/java/org/slf4j/jul/JDK14MultithreadedInitializationTest.java @@ -22,7 +22,7 @@ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ -package org.slf4j.helpers; +package org.slf4j.jul; import static org.junit.Assert.fail; @@ -30,6 +30,7 @@ import java.util.logging.Handler; import org.junit.After; import org.junit.Before; +import org.slf4j.testHarness.MultithreadedInitializationTest; public class JDK14MultithreadedInitializationTest extends MultithreadedInitializationTest { diff --git a/slf4j-log4j12/pom.xml b/slf4j-log4j12/pom.xml index 531c0e7a..9d81eb5c 100755 --- a/slf4j-log4j12/pom.xml +++ b/slf4j-log4j12/pom.xml @@ -37,4 +37,29 @@ + + + + + + org.apache.maven.plugins + maven-surefire-plugin + 2.19.1 + + 1 + false + plain + false + + **/AllTest.java + **/PackageTest.java + + -Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8001 + + + + + + + \ No newline at end of file diff --git a/slf4j-log4j12/src/main/java/module-info.java b/slf4j-log4j12/src/main/java/module-info.java deleted file mode 100755 index db50856b..00000000 --- a/slf4j-log4j12/src/main/java/module-info.java +++ /dev/null @@ -1,5 +0,0 @@ -module org.slf4j.log4j12 { - requires org.slf4j; - requires org.slf4j.spi; - provides org.slf4j.spi.SLF4JServiceProvider with org.slf4j.impl.Log4j12ServiceProvider -} diff --git a/slf4j-log4j12/src/main/java/org/apache/log4j/MDCFriend.java b/slf4j-log4j12/src/main/java/org/apache/log4j/MDCFriend.java index 3b36be75..e2a038cf 100755 --- a/slf4j-log4j12/src/main/java/org/apache/log4j/MDCFriend.java +++ b/slf4j-log4j12/src/main/java/org/apache/log4j/MDCFriend.java @@ -3,31 +3,55 @@ package org.apache.log4j; import java.lang.reflect.Field; import java.lang.reflect.Method; +import org.apache.log4j.MDC; import org.apache.log4j.helpers.ThreadLocalMap; public class MDCFriend { - public static void fixForJava9() { - if (MDC.mdc.tlm == null) { - MDC.mdc.tlm = new ThreadLocalMap(); - MDC.mdc.java1 = false; - setRemoveMethod(MDC.mdc); - } + public static void fixForJava9() { + try { + Field mdcField = MDC.class.getDeclaredField("mdc"); - } + MDC mdcSingleton = (MDC) mdcField.get(null); + Field tlmField = MDC.class.getDeclaredField("tlm"); - private static void setRemoveMethod(MDC mdc) { - try { - Method removeMethod = ThreadLocal.class.getMethod("remove"); - Field removeMethodField = MDC.class.getDeclaredField("removeMethod"); - removeMethodField.setAccessible(true); - removeMethodField.set(mdc, removeMethod); - } catch (NoSuchMethodException e) { - } catch (SecurityException e) { - } catch (NoSuchFieldException e) { - } catch (IllegalArgumentException e) { - } catch (IllegalAccessException e) { - } + Field java1Field = MDC.class.getDeclaredField("java1"); + Object mdcSingleton_tlm = tlmField.get(mdcSingleton); - } + if (mdcSingleton_tlm == null) { + tlmField.set(mdcSingleton, new ThreadLocalMap()); + java1Field.setBoolean(mdcSingleton, false); + setRemoveMethod(mdcSingleton); + } + } catch (SecurityException e) { + e.printStackTrace(); + } catch (NoSuchFieldException e) { + e.printStackTrace(); + } catch (IllegalArgumentException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + + } + + private static void setRemoveMethod(org.apache.log4j.MDC mdc) { + try { + Method removeMethod = ThreadLocal.class.getMethod("remove"); + Field removeMethodField = MDC.class.getDeclaredField("removeMethod"); + removeMethodField.setAccessible(true); + removeMethodField.set(mdc, removeMethod); + } catch (NoSuchMethodException e) { + e.printStackTrace(); + } catch (SecurityException e) { + e.printStackTrace(); + } catch (NoSuchFieldException e) { + e.printStackTrace(); + } catch (IllegalArgumentException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + + } } diff --git a/slf4j-log4j12/src/main/java/org/slf4j/impl/Log4jMDCAdapter.java b/slf4j-log4j12/src/main/java/org/slf4j/impl/Log4jMDCAdapter.java deleted file mode 100644 index 43afe0d9..00000000 --- a/slf4j-log4j12/src/main/java/org/slf4j/impl/Log4jMDCAdapter.java +++ /dev/null @@ -1,98 +0,0 @@ -/** - * Copyright (c) 2004-2011 QOS.ch - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION - * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - */ -package org.slf4j.impl; - -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; - -import org.apache.log4j.MDCFriend; -import org.slf4j.spi.MDCAdapter; - -public class Log4jMDCAdapter implements MDCAdapter { - - static { - if (VersionUtil.getJavaMajorVersion() >= 9) { - MDCFriend.fixForJava9(); - } - } - - public void clear() { - @SuppressWarnings("rawtypes") - Map map = org.apache.log4j.MDC.getContext(); - if (map != null) { - map.clear(); - } - } - - public String get(String key) { - return (String) org.apache.log4j.MDC.get(key); - } - - /** - * Put a context value (the val parameter) as identified with - * the key parameter into the current thread's context map. The - * key parameter cannot be null. Log4j does not - * support null for the val parameter. - * - *

- * This method delegates all work to log4j's MDC. - * - * @throws IllegalArgumentException - * in case the "key" or "val" parameter is null - */ - public void put(String key, String val) { - org.apache.log4j.MDC.put(key, val); - } - - public void remove(String key) { - org.apache.log4j.MDC.remove(key); - } - - @SuppressWarnings({ "rawtypes", "unchecked" }) - public Map getCopyOfContextMap() { - Map old = org.apache.log4j.MDC.getContext(); - if (old != null) { - return new HashMap(old); - } else { - return null; - } - } - - @SuppressWarnings({ "rawtypes", "unchecked" }) - public void setContextMap(Map contextMap) { - Map old = org.apache.log4j.MDC.getContext(); - if (old == null) { - Iterator entrySetIterator = contextMap.entrySet().iterator(); - while (entrySetIterator.hasNext()) { - Map.Entry mapEntry = (Map.Entry) entrySetIterator.next(); - org.apache.log4j.MDC.put((String) mapEntry.getKey(), mapEntry.getValue()); - } - } else { - old.clear(); - old.putAll(contextMap); - } - } -} diff --git a/slf4j-log4j12/src/main/java/org/slf4j/impl/StaticLoggerBinder.java b/slf4j-log4j12/src/main/java/org/slf4j/impl/StaticLoggerBinder.java index 6c1fdeb7..08b361b2 100644 --- a/slf4j-log4j12/src/main/java/org/slf4j/impl/StaticLoggerBinder.java +++ b/slf4j-log4j12/src/main/java/org/slf4j/impl/StaticLoggerBinder.java @@ -27,6 +27,7 @@ package org.slf4j.impl; import org.apache.log4j.Level; import org.slf4j.ILoggerFactory; import org.slf4j.helpers.Util; +import org.slf4j.log4j12.Log4jLoggerFactory; import org.slf4j.spi.LoggerFactoryBinder; /** diff --git a/slf4j-log4j12/src/main/java/org/slf4j/impl/StaticMDCBinder.java b/slf4j-log4j12/src/main/java/org/slf4j/impl/StaticMDCBinder.java index 2f640650..eeabcec7 100644 --- a/slf4j-log4j12/src/main/java/org/slf4j/impl/StaticMDCBinder.java +++ b/slf4j-log4j12/src/main/java/org/slf4j/impl/StaticMDCBinder.java @@ -24,6 +24,7 @@ */ package org.slf4j.impl; +import org.slf4j.log4j12.Log4jMDCAdapter; import org.slf4j.spi.MDCAdapter; /** diff --git a/slf4j-log4j12/src/main/java/org/slf4j/impl/VersionUtil.java b/slf4j-log4j12/src/main/java/org/slf4j/impl/VersionUtil.java deleted file mode 100755 index 2fa54d1a..00000000 --- a/slf4j-log4j12/src/main/java/org/slf4j/impl/VersionUtil.java +++ /dev/null @@ -1,33 +0,0 @@ -package org.slf4j.impl; - -import java.lang.reflect.Method; - -import org.slf4j.helpers.Util; - -public class VersionUtil { - static final int MINIMAL_VERSION = 5; - - static public int getJavaMajorVersion() { - String javaVersionString = Util.safeGetSystemProperty("java.version"); - return getJavaMajorVersion(javaVersionString); - } - - static int getJavaMajorVersion(String versionString) { - if (versionString == null) - return MINIMAL_VERSION; - if (versionString.startsWith("1.")) { - return versionString.charAt(2) - '0'; - } else { - // we running under Java 9 or later - try { - Method versionMethod = Runtime.class.getMethod("version"); - Object versionObj = versionMethod.invoke(null); - Method majorMethod = versionObj.getClass().getMethod("major"); - Integer resultInteger = (Integer) majorMethod.invoke(versionObj); - return resultInteger.intValue(); - } catch (Exception e) { - return MINIMAL_VERSION; - } - } - } -} diff --git a/slf4j-log4j12/src/main/java/org/slf4j/impl/Log4j12ServiceProvider.java b/slf4j-log4j12/src/main/java/org/slf4j/log4j12/Log4j12ServiceProvider.java similarity index 78% rename from slf4j-log4j12/src/main/java/org/slf4j/impl/Log4j12ServiceProvider.java rename to slf4j-log4j12/src/main/java/org/slf4j/log4j12/Log4j12ServiceProvider.java index a74299e4..6170cd45 100755 --- a/slf4j-log4j12/src/main/java/org/slf4j/impl/Log4j12ServiceProvider.java +++ b/slf4j-log4j12/src/main/java/org/slf4j/log4j12/Log4j12ServiceProvider.java @@ -1,4 +1,4 @@ -package org.slf4j.impl; +package org.slf4j.log4j12; import org.apache.log4j.Level; import org.slf4j.ILoggerFactory; @@ -17,10 +17,10 @@ public class Log4j12ServiceProvider implements SLF4JServiceProvider { // to avoid constant folding by the compiler, this field must *not* be final public static String REQUESTED_API_VERSION = "1.8.99"; // !final - private ILoggerFactory loggerFactory = new Log4jLoggerFactory(); - private IMarkerFactory markerFactory = new BasicMarkerFactory(); - private MDCAdapter mdcAdapter = new Log4jMDCAdapter(); - + private ILoggerFactory loggerFactory; + private IMarkerFactory markerFactory; + private MDCAdapter mdcAdapter; + public Log4j12ServiceProvider() { try { @SuppressWarnings("unused") @@ -30,6 +30,13 @@ public class Log4j12ServiceProvider implements SLF4JServiceProvider { } } + @Override + public void initialize() { + loggerFactory = new Log4jLoggerFactory(); + markerFactory = new BasicMarkerFactory(); + mdcAdapter = new Log4jMDCAdapter(); + } + public ILoggerFactory getLoggerFactory() { return loggerFactory; } diff --git a/slf4j-log4j12/src/main/java/org/slf4j/impl/Log4jLoggerAdapter.java b/slf4j-log4j12/src/main/java/org/slf4j/log4j12/Log4jLoggerAdapter.java similarity index 99% rename from slf4j-log4j12/src/main/java/org/slf4j/impl/Log4jLoggerAdapter.java rename to slf4j-log4j12/src/main/java/org/slf4j/log4j12/Log4jLoggerAdapter.java index 6d65b80a..86b09333 100755 --- a/slf4j-log4j12/src/main/java/org/slf4j/impl/Log4jLoggerAdapter.java +++ b/slf4j-log4j12/src/main/java/org/slf4j/log4j12/Log4jLoggerAdapter.java @@ -22,7 +22,7 @@ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ -package org.slf4j.impl; +package org.slf4j.log4j12; import static org.slf4j.event.EventConstants.NA_SUBST; diff --git a/slf4j-log4j12/src/main/java/org/slf4j/impl/Log4jLoggerFactory.java b/slf4j-log4j12/src/main/java/org/slf4j/log4j12/Log4jLoggerFactory.java similarity index 97% rename from slf4j-log4j12/src/main/java/org/slf4j/impl/Log4jLoggerFactory.java rename to slf4j-log4j12/src/main/java/org/slf4j/log4j12/Log4jLoggerFactory.java index f020d108..4f6e58e2 100644 --- a/slf4j-log4j12/src/main/java/org/slf4j/impl/Log4jLoggerFactory.java +++ b/slf4j-log4j12/src/main/java/org/slf4j/log4j12/Log4jLoggerFactory.java @@ -22,7 +22,7 @@ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ -package org.slf4j.impl; +package org.slf4j.log4j12; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; @@ -64,6 +64,7 @@ public class Log4jLoggerFactory implements ILoggerFactory { loggerMap = new ConcurrentHashMap(); // force log4j to initialize org.apache.log4j.LogManager.getRootLogger(); + System.out.println("*********post initializaiton"); } /* diff --git a/slf4j-log4j12/src/main/java/org/slf4j/log4j12/Log4jMDCAdapter.java b/slf4j-log4j12/src/main/java/org/slf4j/log4j12/Log4jMDCAdapter.java new file mode 100644 index 00000000..6634a296 --- /dev/null +++ b/slf4j-log4j12/src/main/java/org/slf4j/log4j12/Log4jMDCAdapter.java @@ -0,0 +1,98 @@ +/** + * Copyright (c) 2004-2011 QOS.ch + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + */ +package org.slf4j.log4j12; + +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; + +import org.apache.log4j.MDCFriend; +import org.slf4j.spi.MDCAdapter; + +public class Log4jMDCAdapter implements MDCAdapter { + + static { + if (VersionUtil.getJavaMajorVersion() >= 9) { + MDCFriend.fixForJava9(); + } + } + + public void clear() { + @SuppressWarnings("rawtypes") + Map map = org.apache.log4j.MDC.getContext(); + if (map != null) { + map.clear(); + } + } + + public String get(String key) { + return (String) org.apache.log4j.MDC.get(key); + } + + /** + * Put a context value (the val parameter) as identified with + * the key parameter into the current thread's context map. The + * key parameter cannot be null. Log4j does not + * support null for the val parameter. + * + *

+ * This method delegates all work to log4j's MDC. + * + * @throws IllegalArgumentException + * in case the "key" or "val" parameter is null + */ + public void put(String key, String val) { + org.apache.log4j.MDC.put(key, val); + } + + public void remove(String key) { + org.apache.log4j.MDC.remove(key); + } + + @SuppressWarnings({ "rawtypes", "unchecked" }) + public Map getCopyOfContextMap() { + Map old = org.apache.log4j.MDC.getContext(); + if (old != null) { + return new HashMap(old); + } else { + return null; + } + } + + @SuppressWarnings({ "rawtypes", "unchecked" }) + public void setContextMap(Map contextMap) { + Map old = org.apache.log4j.MDC.getContext(); + if (old == null) { + Iterator entrySetIterator = contextMap.entrySet().iterator(); + while (entrySetIterator.hasNext()) { + Map.Entry mapEntry = (Map.Entry) entrySetIterator.next(); + org.apache.log4j.MDC.put((String) mapEntry.getKey(), mapEntry.getValue()); + } + } else { + old.clear(); + old.putAll(contextMap); + } + } +} diff --git a/slf4j-log4j12/src/main/java/org/slf4j/log4j12/MDCFriend.xxx b/slf4j-log4j12/src/main/java/org/slf4j/log4j12/MDCFriend.xxx new file mode 100755 index 00000000..588d4d7a --- /dev/null +++ b/slf4j-log4j12/src/main/java/org/slf4j/log4j12/MDCFriend.xxx @@ -0,0 +1,57 @@ +package org.slf4j.log4j12; + +import java.lang.reflect.Field; +import java.lang.reflect.Method; + +import org.apache.log4j.MDC; +import org.apache.log4j.helpers.ThreadLocalMap; + +public class MDCFriend { + + public static void fixForJava9() { + try { + Field mdcField = MDC.class.getDeclaredField("mdc"); + + MDC mdcSingleton = (MDC) mdcField.get(null); + Field tlmField = MDC.class.getDeclaredField("tlm"); + + Field java1Field = MDC.class.getDeclaredField("java1"); + Object mdcSingleton_tlm = tlmField.get(mdcSingleton); + + if (mdcSingleton_tlm == null) { + tlmField.set(mdcSingleton_tlm, new ThreadLocalMap()); + java1Field.setBoolean(mdcSingleton_tlm, false); + setRemoveMethod(mdcSingleton); + } + } catch (SecurityException e) { + e.printStackTrace(); + } catch (NoSuchFieldException e) { + e.printStackTrace(); + } catch (IllegalArgumentException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + + } + + private static void setRemoveMethod(org.apache.log4j.MDC mdc) { + try { + Method removeMethod = ThreadLocal.class.getMethod("remove"); + Field removeMethodField = MDC.class.getDeclaredField("removeMethod"); + removeMethodField.setAccessible(true); + removeMethodField.set(mdc, removeMethod); + } catch (NoSuchMethodException e) { + e.printStackTrace(); + } catch (SecurityException e) { + e.printStackTrace(); + } catch (NoSuchFieldException e) { + e.printStackTrace(); + } catch (IllegalArgumentException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + + } +} diff --git a/slf4j-log4j12/src/main/java/org/slf4j/log4j12/VersionUtil.java b/slf4j-log4j12/src/main/java/org/slf4j/log4j12/VersionUtil.java new file mode 100755 index 00000000..1ed8ff6e --- /dev/null +++ b/slf4j-log4j12/src/main/java/org/slf4j/log4j12/VersionUtil.java @@ -0,0 +1,33 @@ +package org.slf4j.log4j12; + +import java.lang.reflect.Method; + +import org.slf4j.helpers.Util; + +public class VersionUtil { + static final int MINIMAL_VERSION = 5; + + static public int getJavaMajorVersion() { + String javaVersionString = Util.safeGetSystemProperty("java.version"); + return getJavaMajorVersion(javaVersionString); + } + + static public int getJavaMajorVersion(String versionString) { + if (versionString == null) + return MINIMAL_VERSION; + if (versionString.startsWith("1.")) { + return versionString.charAt(2) - '0'; + } else { + // we running under Java 9 or later + try { + Method versionMethod = Runtime.class.getMethod("version"); + Object versionObj = versionMethod.invoke(null); + Method majorMethod = versionObj.getClass().getMethod("major"); + Integer resultInteger = (Integer) majorMethod.invoke(versionObj); + return resultInteger.intValue(); + } catch (Exception e) { + return MINIMAL_VERSION; + } + } + } +} diff --git a/slf4j-log4j12/src/main/resources/META-INF/MANIFEST.MF b/slf4j-log4j12/src/main/resources/META-INF/MANIFEST.MF index 5eba67b0..1bfa7c71 100755 --- a/slf4j-log4j12/src/main/resources/META-INF/MANIFEST.MF +++ b/slf4j-log4j12/src/main/resources/META-INF/MANIFEST.MF @@ -4,7 +4,7 @@ Bundle-SymbolicName: slf4j.log4j12 Bundle-Name: slf4j-log4j12 Bundle-Vendor: SLF4J.ORG Bundle-RequiredExecutionEnvironment: J2SE-1.6 -Export-Package: org.slf4j.impl;version=${parsedVersion.osgiVersion} +Export-Package: org.slf4j.log4j12;version=${parsedVersion.osgiVersion} Import-Package: org.slf4j;version=${parsedVersion.osgiVersion}, org.slf4j.spi;version=${parsedVersion.osgiVersion}, org.slf4j.helpers;version=${parsedVersion.osgiVersion}, diff --git a/slf4j-log4j12/src/main/resources/META-INF/services/org.slf4j.spi.SLF4JServiceProvider b/slf4j-log4j12/src/main/resources/META-INF/services/org.slf4j.spi.SLF4JServiceProvider index 8aa83b06..9a3059b7 100755 --- a/slf4j-log4j12/src/main/resources/META-INF/services/org.slf4j.spi.SLF4JServiceProvider +++ b/slf4j-log4j12/src/main/resources/META-INF/services/org.slf4j.spi.SLF4JServiceProvider @@ -1 +1 @@ -org.slf4j.impl.Log4j12ServiceProvider +org.slf4j.log4j12.Log4j12ServiceProvider diff --git a/slf4j-log4j12/src/test/java/org/apache/log4j/MDCFriendTest.java b/slf4j-log4j12/src/test/java/org/apache/log4j/MDCFriendTest.java deleted file mode 100755 index e487adf1..00000000 --- a/slf4j-log4j12/src/test/java/org/apache/log4j/MDCFriendTest.java +++ /dev/null @@ -1,32 +0,0 @@ -package org.apache.log4j; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNull; - -import java.util.Random; - -import org.junit.Test; -import org.slf4j.impl.VersionUtil; - -public class MDCFriendTest { - - - private static Random random = new Random(); - int diff = random.nextInt(1024*8); - - @Test - public void smoke() { - if(VersionUtil.getJavaMajorVersion() < 9) - return; - - MDCFriend.fixForJava9(); - String key = "MDCFriendTest.smoke"+diff; - String val = "val"+diff; - MDC.put(key, val); - assertEquals(val, MDC.get(key)); - MDC.clear(); - assertNull(MDC.get(key)); - - } - -} diff --git a/slf4j-log4j12/src/test/java/org/slf4j/impl/UtilVersionTest.java b/slf4j-log4j12/src/test/java/org/slf4j/impl/UtilVersionTest.java deleted file mode 100755 index 934e6b47..00000000 --- a/slf4j-log4j12/src/test/java/org/slf4j/impl/UtilVersionTest.java +++ /dev/null @@ -1,24 +0,0 @@ -package org.slf4j.impl; - -import static org.junit.Assert.*; - -import org.junit.Ignore; -import org.junit.Test; - -public class UtilVersionTest { - - @Test - public void test() { - System.out.println(System.getProperty("java.version")); - assertEquals(6, VersionUtil.getJavaMajorVersion("1.6")); - assertEquals(7, VersionUtil.getJavaMajorVersion("1.7.0_21-b11")); - assertEquals(8, VersionUtil.getJavaMajorVersion("1.8.0_25")); - } - - @Ignore - @Test // requires Java 9 to pass - public void testJava9() { - assertEquals(9, VersionUtil.getJavaMajorVersion("9ea")); - } - -} diff --git a/slf4j-log4j12/src/test/java/org/slf4j/InvocationTest.java b/slf4j-log4j12/src/test/java/org/slf4j/log4j12/InvocationTest.java similarity index 97% rename from slf4j-log4j12/src/test/java/org/slf4j/InvocationTest.java rename to slf4j-log4j12/src/test/java/org/slf4j/log4j12/InvocationTest.java index f736f89f..6bcf2ee2 100644 --- a/slf4j-log4j12/src/test/java/org/slf4j/InvocationTest.java +++ b/slf4j-log4j12/src/test/java/org/slf4j/log4j12/InvocationTest.java @@ -22,7 +22,7 @@ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ -package org.slf4j; +package org.slf4j.log4j12; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; @@ -36,6 +36,11 @@ import org.apache.log4j.spi.LoggingEvent; import org.junit.After; import org.junit.Before; import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.slf4j.MDC; +import org.slf4j.Marker; +import org.slf4j.MarkerFactory; /** * Test whether invoking the SLF4J API causes problems or not. diff --git a/slf4j-log4j12/src/test/java/org/slf4j/ListAppender.java b/slf4j-log4j12/src/test/java/org/slf4j/log4j12/ListAppender.java similarity index 98% rename from slf4j-log4j12/src/test/java/org/slf4j/ListAppender.java rename to slf4j-log4j12/src/test/java/org/slf4j/log4j12/ListAppender.java index 29596899..cdd5486d 100644 --- a/slf4j-log4j12/src/test/java/org/slf4j/ListAppender.java +++ b/slf4j-log4j12/src/test/java/org/slf4j/log4j12/ListAppender.java @@ -22,7 +22,7 @@ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ -package org.slf4j; +package org.slf4j.log4j12; import java.util.ArrayList; import java.util.List; diff --git a/slf4j-log4j12/src/test/java/org/slf4j/impl/Log4j12MultithreadedInitializationTest.java b/slf4j-log4j12/src/test/java/org/slf4j/log4j12/Log4j12MultithreadedInitializationTest.java similarity index 91% rename from slf4j-log4j12/src/test/java/org/slf4j/impl/Log4j12MultithreadedInitializationTest.java rename to slf4j-log4j12/src/test/java/org/slf4j/log4j12/Log4j12MultithreadedInitializationTest.java index a651e8f0..70282d7a 100644 --- a/slf4j-log4j12/src/test/java/org/slf4j/impl/Log4j12MultithreadedInitializationTest.java +++ b/slf4j-log4j12/src/test/java/org/slf4j/log4j12/Log4j12MultithreadedInitializationTest.java @@ -22,7 +22,7 @@ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ -package org.slf4j.impl; +package org.slf4j.log4j12; import java.util.List; @@ -32,9 +32,10 @@ import org.junit.After; import org.junit.Before; import static org.junit.Assert.assertNotNull; -import org.slf4j.helpers.MultithreadedInitializationTest; +import org.slf4j.LoggerFactoryFriend; +import org.slf4j.log4j12.testHarness.RecursiveAppender; -public class Log4j12MultithreadedInitializationTest extends MultithreadedInitializationTest { +public class Log4j12MultithreadedInitializationTest extends org.slf4j.testHarness.MultithreadedInitializationTest { static int NUM_LINES_BY_RECURSIVE_APPENDER = 3; // value of LogManager.DEFAULT_CONFIGURATION_KEY; @@ -64,7 +65,6 @@ public class Log4j12MultithreadedInitializationTest extends MultithreadedInitial private List getRecordedEvents() { org.apache.log4j.Logger root = LogManager.getRootLogger(); - RecursiveAppender ra = (RecursiveAppender) root.getAppender("RECURSIVE"); assertNotNull(ra); return ra.events; diff --git a/slf4j-log4j12/src/test/java/org/slf4j/log4j12/MDCFriendTest.java b/slf4j-log4j12/src/test/java/org/slf4j/log4j12/MDCFriendTest.java new file mode 100755 index 00000000..bc102699 --- /dev/null +++ b/slf4j-log4j12/src/test/java/org/slf4j/log4j12/MDCFriendTest.java @@ -0,0 +1,33 @@ +package org.slf4j.log4j12; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; + +import java.util.Random; + +import org.apache.log4j.MDC; +import org.apache.log4j.MDCFriend; +import org.junit.Test; +import org.slf4j.log4j12.VersionUtil; + +public class MDCFriendTest { + + private static Random random = new Random(); + int diff = random.nextInt(1024 * 8); + + @Test + public void smoke() { + if (VersionUtil.getJavaMajorVersion() < 9) + return; + + MDCFriend.fixForJava9(); + String key = "MDCFriendTest.smoke" + diff; + String val = "val" + diff; + MDC.put(key, val); + assertEquals(val, MDC.get(key)); + MDC.clear(); + assertNull(MDC.get(key)); + + } + +} diff --git a/slf4j-log4j12/src/test/java/org/slf4j/impl/RecursiveInitializationTest.java b/slf4j-log4j12/src/test/java/org/slf4j/log4j12/RecursiveInitializationTest.java similarity index 98% rename from slf4j-log4j12/src/test/java/org/slf4j/impl/RecursiveInitializationTest.java rename to slf4j-log4j12/src/test/java/org/slf4j/log4j12/RecursiveInitializationTest.java index f6d485ef..286fbae2 100755 --- a/slf4j-log4j12/src/test/java/org/slf4j/impl/RecursiveInitializationTest.java +++ b/slf4j-log4j12/src/test/java/org/slf4j/log4j12/RecursiveInitializationTest.java @@ -22,7 +22,7 @@ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ -package org.slf4j.impl; +package org.slf4j.log4j12; import java.util.Random; diff --git a/slf4j-log4j12/src/test/java/org/slf4j/log4j12/UtilVersionTest.java b/slf4j-log4j12/src/test/java/org/slf4j/log4j12/UtilVersionTest.java new file mode 100755 index 00000000..601ab331 --- /dev/null +++ b/slf4j-log4j12/src/test/java/org/slf4j/log4j12/UtilVersionTest.java @@ -0,0 +1,24 @@ +package org.slf4j.log4j12; + +import static org.junit.Assert.*; + +import org.junit.Ignore; +import org.junit.Test; + +public class UtilVersionTest { + + @Test + public void test() { + System.out.println(System.getProperty("java.version")); + assertEquals(6, VersionUtil.getJavaMajorVersion("1.6")); + assertEquals(7, VersionUtil.getJavaMajorVersion("1.7.0_21-b11")); + assertEquals(8, VersionUtil.getJavaMajorVersion("1.8.0_25")); + } + + @Ignore + @Test // requires Java 9 to pass + public void testJava9() { + assertEquals(9, VersionUtil.getJavaMajorVersion("9ea")); + } + +} diff --git a/slf4j-log4j12/src/test/java/org/slf4j/impl/RecursiveAppender.java b/slf4j-log4j12/src/test/java/org/slf4j/log4j12/testHarness/RecursiveAppender.java similarity index 93% rename from slf4j-log4j12/src/test/java/org/slf4j/impl/RecursiveAppender.java rename to slf4j-log4j12/src/test/java/org/slf4j/log4j12/testHarness/RecursiveAppender.java index 6c1e6414..2595142a 100644 --- a/slf4j-log4j12/src/test/java/org/slf4j/impl/RecursiveAppender.java +++ b/slf4j-log4j12/src/test/java/org/slf4j/log4j12/testHarness/RecursiveAppender.java @@ -22,7 +22,7 @@ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ -package org.slf4j.impl; +package org.slf4j.log4j12.testHarness; import java.util.ArrayList; import java.util.List; @@ -39,10 +39,10 @@ public class RecursiveAppender extends AppenderSkeleton { int activationDelay = 0; String loggerName = "org.slf4j.impl.RecursiveAppender" + diff; - List events = new ArrayList(); + public List events = new ArrayList(); public RecursiveAppender() { - System.out.println("entering RecursiveAppender constructor"); + System.out.println("XXXXXXX entering RecursiveAppender constructor"); Logger logger = LoggerFactory.getLogger(loggerName); logger.info("Calling a logger in the constructor"); System.out.println("exiting RecursiveAppender constructor"); diff --git a/slf4j-log4j12/src/test/resources/recursiveInit.properties b/slf4j-log4j12/src/test/resources/recursiveInit.properties index a8d5d765..54474f0e 100644 --- a/slf4j-log4j12/src/test/resources/recursiveInit.properties +++ b/slf4j-log4j12/src/test/resources/recursiveInit.properties @@ -5,4 +5,5 @@ log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout log4j.appender.CONSOLE.layout.ConversionPattern=%d [%t] %c - %m%n -log4j.appender.RECURSIVE=org.slf4j.impl.RecursiveAppender \ No newline at end of file +log4j.appender.RECURSIVE=org.slf4j.log4j12.testHarness.RecursiveAppender + \ No newline at end of file diff --git a/slf4j-log4j12/src/test/resources/recursiveInitWithActivationDelay.properties b/slf4j-log4j12/src/test/resources/recursiveInitWithActivationDelay.properties index 47685626..ea14dfb3 100755 --- a/slf4j-log4j12/src/test/resources/recursiveInitWithActivationDelay.properties +++ b/slf4j-log4j12/src/test/resources/recursiveInitWithActivationDelay.properties @@ -5,5 +5,5 @@ log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout log4j.appender.CONSOLE.layout.ConversionPattern=CON %d [%t] %c - %m%n -log4j.appender.RECURSIVE=org.slf4j.impl.RecursiveAppender -log4j.appender.RECURSIVE.activationDelay=10 \ No newline at end of file +log4j.appender.RECURSIVE=org.slf4j.log4j12.testHarness.RecursiveAppender +log4j.appender.RECURSIVE.activationDelay=10 diff --git a/slf4j-nop/src/main/java/module-info.java b/slf4j-nop/src/main/java/module-info.java index 77de0d79..69870a76 100755 --- a/slf4j-nop/src/main/java/module-info.java +++ b/slf4j-nop/src/main/java/module-info.java @@ -1,5 +1,4 @@ module org.slf4j.nop { requires org.slf4j; - requires org.slf4j.spi; - provides org.slf4j.spi.SLF4JServiceProvider with org.slf4j.helpers.NOPServiceProvider; + provides org.slf4j.spi.SLF4JServiceProvider with org.slf4j.nop.NOPServiceProvider; } diff --git a/slf4j-nop/src/main/java/org/slf4j/nop/NOPLogger.java b/slf4j-nop/src/main/java/org/slf4j/nop/NOPLogger.java new file mode 100755 index 00000000..abfe49b7 --- /dev/null +++ b/slf4j-nop/src/main/java/org/slf4j/nop/NOPLogger.java @@ -0,0 +1,220 @@ +/** + * Copyright (c) 2004-2011 QOS.ch + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + */ +package org.slf4j.nop; + +import org.slf4j.Logger; +import org.slf4j.helpers.MarkerIgnoringBase; + +/** + * A direct NOP (no operation) implementation of {@link Logger}. + * + * @author Ceki Gülcü + */ +public class NOPLogger extends MarkerIgnoringBase { + + private static final long serialVersionUID = -517220405410904473L; + + /** + * The unique instance of NOPLogger. + */ + public static final NOPLogger NOP_LOGGER = new NOPLogger(); + + /** + * There is no point in creating multiple instances of NOPLogger, + * except by derived classes, hence the protected access for the constructor. + */ + protected NOPLogger() { + } + + /** + * Always returns the string value "NOP". + */ + public String getName() { + return "NOP"; + } + + /** + * Always returns false. + * @return always false + */ + final public boolean isTraceEnabled() { + return false; + } + + /** A NOP implementation. */ + final public void trace(String msg) { + // NOP + } + + /** A NOP implementation. */ + final public void trace(String format, Object arg) { + // NOP + } + + /** A NOP implementation. */ + public final void trace(String format, Object arg1, Object arg2) { + // NOP + } + + /** A NOP implementation. */ + public final void trace(String format, Object... argArray) { + // NOP + } + + /** A NOP implementation. */ + final public void trace(String msg, Throwable t) { + // NOP + } + + /** + * Always returns false. + * @return always false + */ + final public boolean isDebugEnabled() { + return false; + } + + /** A NOP implementation. */ + final public void debug(String msg) { + // NOP + } + + /** A NOP implementation. */ + final public void debug(String format, Object arg) { + // NOP + } + + /** A NOP implementation. */ + public final void debug(String format, Object arg1, Object arg2) { + // NOP + } + + /** A NOP implementation. */ + public final void debug(String format, Object... argArray) { + // NOP + } + + /** A NOP implementation. */ + final public void debug(String msg, Throwable t) { + // NOP + } + + /** + * Always returns false. + * @return always false + */ + final public boolean isInfoEnabled() { + // NOP + return false; + } + + /** A NOP implementation. */ + final public void info(String msg) { + // NOP + } + + /** A NOP implementation. */ + final public void info(String format, Object arg1) { + // NOP + } + + /** A NOP implementation. */ + final public void info(String format, Object arg1, Object arg2) { + // NOP + } + + /** A NOP implementation. */ + public final void info(String format, Object... argArray) { + // NOP + } + + /** A NOP implementation. */ + final public void info(String msg, Throwable t) { + // NOP + } + + /** + * Always returns false. + * @return always false + */ + final public boolean isWarnEnabled() { + return false; + } + + /** A NOP implementation. */ + final public void warn(String msg) { + // NOP + } + + /** A NOP implementation. */ + final public void warn(String format, Object arg1) { + // NOP + } + + /** A NOP implementation. */ + final public void warn(String format, Object arg1, Object arg2) { + // NOP + } + + /** A NOP implementation. */ + public final void warn(String format, Object... argArray) { + // NOP + } + + /** A NOP implementation. */ + final public void warn(String msg, Throwable t) { + // NOP + } + + /** A NOP implementation. */ + final public boolean isErrorEnabled() { + return false; + } + + /** A NOP implementation. */ + final public void error(String msg) { + // NOP + } + + /** A NOP implementation. */ + final public void error(String format, Object arg1) { + // NOP + } + + /** A NOP implementation. */ + final public void error(String format, Object arg1, Object arg2) { + // NOP + } + + /** A NOP implementation. */ + public final void error(String format, Object... argArray) { + // NOP + } + + /** A NOP implementation. */ + final public void error(String msg, Throwable t) { + // NOP + } +} diff --git a/slf4j-jdk14/src/test/java/org/slf4j/impl/PerfTest.java b/slf4j-nop/src/main/java/org/slf4j/nop/NOPLoggerFactory.java old mode 100644 new mode 100755 similarity index 54% rename from slf4j-jdk14/src/test/java/org/slf4j/impl/PerfTest.java rename to slf4j-nop/src/main/java/org/slf4j/nop/NOPLoggerFactory.java index 8aa4a31b..6c17feb5 --- a/slf4j-jdk14/src/test/java/org/slf4j/impl/PerfTest.java +++ b/slf4j-nop/src/main/java/org/slf4j/nop/NOPLoggerFactory.java @@ -22,45 +22,27 @@ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ -package org.slf4j.impl; +package org.slf4j.nop; -import org.junit.Ignore; -import org.junit.Test; +import org.slf4j.ILoggerFactory; import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.slf4j.helpers.BogoPerf; +import org.slf4j.helpers.NOPLogger; -@Ignore -public class PerfTest { +/** + * NOPLoggerFactory is an trivial implementation of {@link + * ILoggerFactory} which always returns the unique instance of + * NOPLogger. + * + * @author Ceki Gülcü + */ +public class NOPLoggerFactory implements ILoggerFactory { - static long REFERENCE_BIPS = 9000; - - @Test - public void issue63() { - - int LEN = 1000 * 1000 * 10; - debugLoop(LEN); // warm up - double avg = debugLoop(LEN); - long referencePerf = 93; - BogoPerf.assertDuration(avg, referencePerf, REFERENCE_BIPS); - - // when the code is guarded by a logger.isLoggable condition, - // duration is about 16 *micro*seconds for 1000 iterations - // when it is not guarded the figure is 90 milliseconds, - // i.e. a ration of 1 to 5000 + public NOPLoggerFactory() { + // nothing to do } - double debugLoop(int len) { - Logger logger = LoggerFactory.getLogger(PerfTest.class); - long start = System.currentTimeMillis(); - for (int i = 0; i < len; i++) { - logger.debug("hello"); - } - - long end = System.currentTimeMillis(); - - long duration = end - start; - return duration; + public Logger getLogger(String name) { + return NOPLogger.NOP_LOGGER; } } diff --git a/slf4j-nop/src/main/java/org/slf4j/nop/NOPMDCAdapter.java b/slf4j-nop/src/main/java/org/slf4j/nop/NOPMDCAdapter.java new file mode 100755 index 00000000..6074f94a --- /dev/null +++ b/slf4j-nop/src/main/java/org/slf4j/nop/NOPMDCAdapter.java @@ -0,0 +1,63 @@ +/** + * Copyright (c) 2004-2011 QOS.ch + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + */ +package org.slf4j.nop; + +import java.util.Map; + +import org.slf4j.spi.MDCAdapter; + +/** + * This adapter is an empty implementation of the {@link MDCAdapter} interface. + * It is used for all logging systems which do not support mapped + * diagnostic contexts such as JDK14, simple and NOP. + * + * @author Ceki Gülcü + * + * @since 1.4.1 + */ +public class NOPMDCAdapter implements MDCAdapter { + + public void clear() { + } + + public String get(String key) { + return null; + } + + public void put(String key, String val) { + } + + public void remove(String key) { + } + + public Map getCopyOfContextMap() { + return null; + } + + public void setContextMap(Map contextMap) { + // NOP + } + +} diff --git a/slf4j-simple/src/main/java/org/slf4j/impl/SimpleServiceProvider.java b/slf4j-nop/src/main/java/org/slf4j/nop/NOPServiceProvider.java similarity index 80% rename from slf4j-simple/src/main/java/org/slf4j/impl/SimpleServiceProvider.java rename to slf4j-nop/src/main/java/org/slf4j/nop/NOPServiceProvider.java index cbe41df3..1f4ca6e1 100755 --- a/slf4j-simple/src/main/java/org/slf4j/impl/SimpleServiceProvider.java +++ b/slf4j-nop/src/main/java/org/slf4j/nop/NOPServiceProvider.java @@ -1,13 +1,14 @@ -package org.slf4j.impl; +package org.slf4j.nop; import org.slf4j.ILoggerFactory; import org.slf4j.IMarkerFactory; import org.slf4j.helpers.BasicMarkerFactory; +import org.slf4j.helpers.NOPLoggerFactory; import org.slf4j.helpers.NOPMDCAdapter; import org.slf4j.spi.MDCAdapter; import org.slf4j.spi.SLF4JServiceProvider; -public class SimpleServiceProvider implements SLF4JServiceProvider { +public class NOPServiceProvider implements SLF4JServiceProvider { /** * Declare the version of the SLF4J API this implementation is compiled against. @@ -16,10 +17,10 @@ public class SimpleServiceProvider implements SLF4JServiceProvider { // to avoid constant folding by the compiler, this field must *not* be final public static String REQUESTED_API_VERSION = "1.8.99"; // !final - private ILoggerFactory loggerFactory = new SimpleLoggerFactory(); + private ILoggerFactory loggerFactory = new NOPLoggerFactory(); private IMarkerFactory markerFactory = new BasicMarkerFactory(); private MDCAdapter mdcAdapter = new NOPMDCAdapter(); - + public ILoggerFactory getLoggerFactory() { return loggerFactory; } @@ -36,4 +37,7 @@ public class SimpleServiceProvider implements SLF4JServiceProvider { return REQUESTED_API_VERSION; } + public void initialize() { + + } } diff --git a/slf4j-nop/src/main/resources/META-INF/MANIFEST.MF b/slf4j-nop/src/main/resources/META-INF/MANIFEST.MF index 86bb16a3..2d8809b2 100755 --- a/slf4j-nop/src/main/resources/META-INF/MANIFEST.MF +++ b/slf4j-nop/src/main/resources/META-INF/MANIFEST.MF @@ -4,7 +4,7 @@ Bundle-SymbolicName: slf4j.nop Bundle-Name: slf4j-nop Bundle-Vendor: SLF4J.ORG Bundle-RequiredExecutionEnvironment: J2SE-1.6 -Export-Package: org.slf4j.impl;version=${parsedVersion.osgiVersion} +Export-Package: org.slf4j.nop;version=${parsedVersion.osgiVersion} Import-Package: org.slf4j;version=${parsedVersion.osgiVersion}, org.slf4j.spi;version=${parsedVersion.osgiVersion}, org.slf4j.helpers;version=${parsedVersion.osgiVersion}, diff --git a/slf4j-nop/src/test/java/org/slf4j/LoggerFactoryFriend.java b/slf4j-nop/src/test/java/org/slf4j/LoggerFactoryFriend.java deleted file mode 100755 index 4398d3b2..00000000 --- a/slf4j-nop/src/test/java/org/slf4j/LoggerFactoryFriend.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.slf4j; - -public class LoggerFactoryFriend { - static public void reset() { - LoggerFactory.reset(); - } -} diff --git a/slf4j-nop/src/test/java/org/slf4j/InvocationTest.java b/slf4j-nop/src/test/java/org/slf4j/nop/InvocationTest.java similarity index 96% rename from slf4j-nop/src/test/java/org/slf4j/InvocationTest.java rename to slf4j-nop/src/test/java/org/slf4j/nop/InvocationTest.java index 51ae1fff..7dc5ec00 100644 --- a/slf4j-nop/src/test/java/org/slf4j/InvocationTest.java +++ b/slf4j-nop/src/test/java/org/slf4j/nop/InvocationTest.java @@ -22,11 +22,16 @@ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ -package org.slf4j; +package org.slf4j.nop; import static org.junit.Assert.assertNull; import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.slf4j.MDC; +import org.slf4j.Marker; +import org.slf4j.MarkerFactory; /** * Test whether invoking the SLF4J API causes problems or not. diff --git a/slf4j-nop/src/test/java/org/slf4j/impl/MultithreadedInitializationTest.java b/slf4j-nop/src/test/java/org/slf4j/nop/MultithreadedInitializationTest.java similarity index 99% rename from slf4j-nop/src/test/java/org/slf4j/impl/MultithreadedInitializationTest.java rename to slf4j-nop/src/test/java/org/slf4j/nop/MultithreadedInitializationTest.java index 493b3d75..95b60819 100755 --- a/slf4j-nop/src/test/java/org/slf4j/impl/MultithreadedInitializationTest.java +++ b/slf4j-nop/src/test/java/org/slf4j/nop/MultithreadedInitializationTest.java @@ -22,7 +22,7 @@ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ -package org.slf4j.impl; +package org.slf4j.nop; import static org.junit.Assert.assertEquals; diff --git a/slf4j-simple/src/main/java/module-info.java b/slf4j-simple/src/main/java/module-info.java index 8dc3f7e7..b7df8c87 100755 --- a/slf4j-simple/src/main/java/module-info.java +++ b/slf4j-simple/src/main/java/module-info.java @@ -1,5 +1,4 @@ module org.slf4j.simple { requires org.slf4j; - requires org.slf4j.spi; - provides org.slf4j.spi.SLF4JServiceProvider with org.slf4j.impl.SimpleServiceProvider; + provides org.slf4j.spi.SLF4JServiceProvider with org.slf4j.simple.SimpleServiceProvider; } diff --git a/slf4j-simple/src/main/java/org/slf4j/impl/StaticLoggerBinder.java b/slf4j-simple/src/main/java/org/slf4j/impl/StaticLoggerBinder.java index f18768df..7be5eac7 100644 --- a/slf4j-simple/src/main/java/org/slf4j/impl/StaticLoggerBinder.java +++ b/slf4j-simple/src/main/java/org/slf4j/impl/StaticLoggerBinder.java @@ -26,6 +26,7 @@ package org.slf4j.impl; import org.slf4j.ILoggerFactory; import org.slf4j.spi.LoggerFactoryBinder; +import org.slf4j.simple.SimpleLoggerFactory; /** * As of SLF4J version 1.8.0, the static binder mechanism is deprecated. diff --git a/slf4j-simple/src/main/java/org/slf4j/impl/OutputChoice.java b/slf4j-simple/src/main/java/org/slf4j/simple/OutputChoice.java similarity index 98% rename from slf4j-simple/src/main/java/org/slf4j/impl/OutputChoice.java rename to slf4j-simple/src/main/java/org/slf4j/simple/OutputChoice.java index 16c42d39..87a988e2 100755 --- a/slf4j-simple/src/main/java/org/slf4j/impl/OutputChoice.java +++ b/slf4j-simple/src/main/java/org/slf4j/simple/OutputChoice.java @@ -1,4 +1,4 @@ -package org.slf4j.impl; +package org.slf4j.simple; import java.io.PrintStream; diff --git a/slf4j-simple/src/main/java/org/slf4j/impl/SimpleLogger.java b/slf4j-simple/src/main/java/org/slf4j/simple/SimpleLogger.java similarity index 99% rename from slf4j-simple/src/main/java/org/slf4j/impl/SimpleLogger.java rename to slf4j-simple/src/main/java/org/slf4j/simple/SimpleLogger.java index fe798222..46463dee 100644 --- a/slf4j-simple/src/main/java/org/slf4j/impl/SimpleLogger.java +++ b/slf4j-simple/src/main/java/org/slf4j/simple/SimpleLogger.java @@ -22,7 +22,7 @@ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ -package org.slf4j.impl; +package org.slf4j.simple; import java.io.PrintStream; import java.util.Date; diff --git a/slf4j-simple/src/main/java/org/slf4j/impl/SimpleLoggerConfiguration.java b/slf4j-simple/src/main/java/org/slf4j/simple/SimpleLoggerConfiguration.java similarity index 98% rename from slf4j-simple/src/main/java/org/slf4j/impl/SimpleLoggerConfiguration.java rename to slf4j-simple/src/main/java/org/slf4j/simple/SimpleLoggerConfiguration.java index 08c0b056..5e332074 100755 --- a/slf4j-simple/src/main/java/org/slf4j/impl/SimpleLoggerConfiguration.java +++ b/slf4j-simple/src/main/java/org/slf4j/simple/SimpleLoggerConfiguration.java @@ -1,4 +1,4 @@ -package org.slf4j.impl; +package org.slf4j.simple; import java.io.FileNotFoundException; import java.io.FileOutputStream; @@ -11,7 +11,7 @@ import java.text.SimpleDateFormat; import java.util.Properties; import org.slf4j.helpers.Util; -import org.slf4j.impl.OutputChoice.OutputChoiceType; +import org.slf4j.simple.OutputChoice.OutputChoiceType; /** * This class holds configuration values for {@link SimpleLogger}. The diff --git a/slf4j-simple/src/main/java/org/slf4j/impl/SimpleLoggerFactory.java b/slf4j-simple/src/main/java/org/slf4j/simple/SimpleLoggerFactory.java similarity index 99% rename from slf4j-simple/src/main/java/org/slf4j/impl/SimpleLoggerFactory.java rename to slf4j-simple/src/main/java/org/slf4j/simple/SimpleLoggerFactory.java index 9a851f8d..38129ec1 100644 --- a/slf4j-simple/src/main/java/org/slf4j/impl/SimpleLoggerFactory.java +++ b/slf4j-simple/src/main/java/org/slf4j/simple/SimpleLoggerFactory.java @@ -22,7 +22,7 @@ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ -package org.slf4j.impl; +package org.slf4j.simple; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; diff --git a/slf4j-jdk14/src/main/java/org/slf4j/impl/JULServiceProvider.java b/slf4j-simple/src/main/java/org/slf4j/simple/SimpleServiceProvider.java similarity index 63% rename from slf4j-jdk14/src/main/java/org/slf4j/impl/JULServiceProvider.java rename to slf4j-simple/src/main/java/org/slf4j/simple/SimpleServiceProvider.java index 2412fb7b..9ff19810 100755 --- a/slf4j-jdk14/src/main/java/org/slf4j/impl/JULServiceProvider.java +++ b/slf4j-simple/src/main/java/org/slf4j/simple/SimpleServiceProvider.java @@ -1,13 +1,13 @@ -package org.slf4j.impl; +package org.slf4j.simple; import org.slf4j.ILoggerFactory; import org.slf4j.IMarkerFactory; -import org.slf4j.helpers.BasicMDCAdapter; import org.slf4j.helpers.BasicMarkerFactory; +import org.slf4j.helpers.NOPMDCAdapter; import org.slf4j.spi.MDCAdapter; import org.slf4j.spi.SLF4JServiceProvider; -public class JULServiceProvider implements SLF4JServiceProvider { +public class SimpleServiceProvider implements SLF4JServiceProvider { /** * Declare the version of the SLF4J API this implementation is compiled against. @@ -16,10 +16,10 @@ public class JULServiceProvider implements SLF4JServiceProvider { // to avoid constant folding by the compiler, this field must *not* be final public static String REQUESTED_API_VERSION = "1.8.99"; // !final - private ILoggerFactory loggerFactory = new org.slf4j.impl.JDK14LoggerFactory(); - private IMarkerFactory markerFactory = new BasicMarkerFactory(); - private MDCAdapter mdcAdapter = new BasicMDCAdapter(); - + private ILoggerFactory loggerFactory; + private IMarkerFactory markerFactory; + private MDCAdapter mdcAdapter; + public ILoggerFactory getLoggerFactory() { return loggerFactory; } @@ -35,4 +35,14 @@ public class JULServiceProvider implements SLF4JServiceProvider { public String getRequesteApiVersion() { return REQUESTED_API_VERSION; } + + + @Override + public void initialize() { + + loggerFactory = new SimpleLoggerFactory(); + markerFactory = new BasicMarkerFactory(); + mdcAdapter = new NOPMDCAdapter(); + } + } diff --git a/slf4j-simple/src/main/resources/META-INF/MANIFEST.MF b/slf4j-simple/src/main/resources/META-INF/MANIFEST.MF index 8d95599e..698e231d 100755 --- a/slf4j-simple/src/main/resources/META-INF/MANIFEST.MF +++ b/slf4j-simple/src/main/resources/META-INF/MANIFEST.MF @@ -5,7 +5,7 @@ Bundle-Name: slf4j-simple Bundle-Vendor: SLF4J.ORG Require-Bundle: slf4j.api Bundle-RequiredExecutionEnvironment: J2SE-1.6 -Export-Package: org.slf4j.impl;version=${parsedVersion.osgiVersion} +Export-Package: org.slf4j.simple;version=${parsedVersion.osgiVersion} Import-Package: org.slf4j;version=${parsedVersion.osgiVersion}, org.slf4j.spi;version=${parsedVersion.osgiVersion}, org.slf4j.helpers;version=${parsedVersion.osgiVersion}, diff --git a/slf4j-simple/src/main/resources/META-INF/services/org.slf4j.spi.SLF4JServiceProvider b/slf4j-simple/src/main/resources/META-INF/services/org.slf4j.spi.SLF4JServiceProvider index de1918c0..5cda4490 100755 --- a/slf4j-simple/src/main/resources/META-INF/services/org.slf4j.spi.SLF4JServiceProvider +++ b/slf4j-simple/src/main/resources/META-INF/services/org.slf4j.spi.SLF4JServiceProvider @@ -1 +1 @@ -org.slf4j.impl.SimpleServiceProvider \ No newline at end of file +org.slf4j.simple.SimpleServiceProvider \ No newline at end of file diff --git a/slf4j-simple/src/test/java/org/slf4j/LoggerFactoryFriend.java b/slf4j-simple/src/test/java/org/slf4j/LoggerFactoryFriend.java deleted file mode 100755 index 4398d3b2..00000000 --- a/slf4j-simple/src/test/java/org/slf4j/LoggerFactoryFriend.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.slf4j; - -public class LoggerFactoryFriend { - static public void reset() { - LoggerFactory.reset(); - } -} diff --git a/slf4j-simple/src/test/java/org/slf4j/DetectLoggerNameMismatchTest.java b/slf4j-simple/src/test/java/org/slf4j/simple/DetectLoggerNameMismatchTest.java similarity index 87% rename from slf4j-simple/src/test/java/org/slf4j/DetectLoggerNameMismatchTest.java rename to slf4j-simple/src/test/java/org/slf4j/simple/DetectLoggerNameMismatchTest.java index 0e811d68..516ce8e4 100755 --- a/slf4j-simple/src/test/java/org/slf4j/DetectLoggerNameMismatchTest.java +++ b/slf4j-simple/src/test/java/org/slf4j/simple/DetectLoggerNameMismatchTest.java @@ -22,7 +22,7 @@ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ -package org.slf4j; +package org.slf4j.simple; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; @@ -30,6 +30,9 @@ import static org.junit.Assert.assertTrue; import java.io.ByteArrayOutputStream; import java.io.PrintStream; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.slf4j.LoggerFactoryFriend; import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -48,6 +51,8 @@ public class DetectLoggerNameMismatchTest { private static final String MISMATCH_STRING = "Detected logger name mismatch"; + static String NAME_OF_THIS_CLASS = DetectLoggerNameMismatchTest.class.getName(); + private final ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); private final PrintStream oldErr = System.err; @@ -90,8 +95,8 @@ public class DetectLoggerNameMismatchTest { public void testTriggerWholeMessage() { setTrialEnabled(true); LoggerFactory.getLogger(String.class); - boolean success = String.valueOf(byteArrayOutputStream).contains( - "Detected logger name mismatch. Given name: \"java.lang.String\"; " + "computed name: \"org.slf4j.DetectLoggerNameMismatchTest\"."); + boolean success = String.valueOf(byteArrayOutputStream) + .contains("Detected logger name mismatch. Given name: \"java.lang.String\"; " + "computed name: \"" + NAME_OF_THIS_CLASS + "\"."); assertTrue("Actual value of byteArrayOutputStream: " + String.valueOf(byteArrayOutputStream), success); } @@ -102,7 +107,7 @@ public class DetectLoggerNameMismatchTest { public void testPassIfMatch() { setTrialEnabled(true); Logger logger = LoggerFactory.getLogger(DetectLoggerNameMismatchTest.class); - assertEquals("org.slf4j.DetectLoggerNameMismatchTest", logger.getName()); + assertEquals(DetectLoggerNameMismatchTest.class.getName(), logger.getName()); assertMismatchDetected(false); } @@ -114,7 +119,7 @@ public class DetectLoggerNameMismatchTest { public void verifyLoggerDefinedInBaseWithOverridenGetClassMethod() { setTrialEnabled(true); Square square = new Square(); - assertEquals("org.slf4j.Square", square.logger.getName()); + assertEquals(Square.class.getName(), square.logger.getName()); assertMismatchDetected(false); } @@ -122,7 +127,7 @@ public class DetectLoggerNameMismatchTest { // The system property is read into a static variable at initialization time // so we cannot just reset the system property to test this feature. // Therefore we set the variable directly. - LoggerFactory.DETECT_LOGGER_NAME_MISMATCH = enabled; + LoggerFactoryFriend.setDetectLoggerNameMismatch(enabled); } } diff --git a/slf4j-simple/src/test/java/org/slf4j/InvocationTest.java b/slf4j-simple/src/test/java/org/slf4j/simple/InvocationTest.java similarity index 96% rename from slf4j-simple/src/test/java/org/slf4j/InvocationTest.java rename to slf4j-simple/src/test/java/org/slf4j/simple/InvocationTest.java index 33b20eb7..709d4e00 100644 --- a/slf4j-simple/src/test/java/org/slf4j/InvocationTest.java +++ b/slf4j-simple/src/test/java/org/slf4j/simple/InvocationTest.java @@ -22,7 +22,7 @@ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ -package org.slf4j; +package org.slf4j.simple; import static org.junit.Assert.assertNull; @@ -31,6 +31,11 @@ import java.io.PrintStream; import org.junit.After; import org.junit.Before; import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.slf4j.MDC; +import org.slf4j.Marker; +import org.slf4j.MarkerFactory; /** * Test whether invoking the SLF4J API causes problems or not. diff --git a/slf4j-simple/src/test/java/org/slf4j/SilentPrintStream.java b/slf4j-simple/src/test/java/org/slf4j/simple/SilentPrintStream.java similarity index 98% rename from slf4j-simple/src/test/java/org/slf4j/SilentPrintStream.java rename to slf4j-simple/src/test/java/org/slf4j/simple/SilentPrintStream.java index 1d710d98..a440d2d7 100644 --- a/slf4j-simple/src/test/java/org/slf4j/SilentPrintStream.java +++ b/slf4j-simple/src/test/java/org/slf4j/simple/SilentPrintStream.java @@ -22,7 +22,7 @@ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ -package org.slf4j; +package org.slf4j.simple; import java.io.PrintStream; diff --git a/slf4j-simple/src/test/java/org/slf4j/helpers/SimpleLoggerMultithreadedInitializationTest.java b/slf4j-simple/src/test/java/org/slf4j/simple/SimpleLoggerMultithreadedInitializationTest.java similarity index 96% rename from slf4j-simple/src/test/java/org/slf4j/helpers/SimpleLoggerMultithreadedInitializationTest.java rename to slf4j-simple/src/test/java/org/slf4j/simple/SimpleLoggerMultithreadedInitializationTest.java index 853619d4..ece98c0b 100644 --- a/slf4j-simple/src/test/java/org/slf4j/helpers/SimpleLoggerMultithreadedInitializationTest.java +++ b/slf4j-simple/src/test/java/org/slf4j/simple/SimpleLoggerMultithreadedInitializationTest.java @@ -22,7 +22,7 @@ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ -package org.slf4j.helpers; +package org.slf4j.simple; import java.io.PrintStream; import java.util.ArrayList; @@ -32,7 +32,8 @@ import java.util.List; import org.junit.After; import org.junit.Before; import org.slf4j.LoggerFactoryFriend; -import org.slf4j.impl.SimpleLogger; +import org.slf4j.testHarness.MultithreadedInitializationTest; +import org.slf4j.simple.SimpleLogger; public class SimpleLoggerMultithreadedInitializationTest extends MultithreadedInitializationTest { // final static int THREAD_COUNT = 4 + Runtime.getRuntime().availableProcessors() * 2; diff --git a/slf4j-simple/src/test/java/org/slf4j/impl/SimpleLoggerTest.java b/slf4j-simple/src/test/java/org/slf4j/simple/SimpleLoggerTest.java similarity index 94% rename from slf4j-simple/src/test/java/org/slf4j/impl/SimpleLoggerTest.java rename to slf4j-simple/src/test/java/org/slf4j/simple/SimpleLoggerTest.java index 620e3ab3..ff698524 100644 --- a/slf4j-simple/src/test/java/org/slf4j/impl/SimpleLoggerTest.java +++ b/slf4j-simple/src/test/java/org/slf4j/simple/SimpleLoggerTest.java @@ -22,7 +22,7 @@ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ -package org.slf4j.impl; +package org.slf4j.simple; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; @@ -36,6 +36,7 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; +import org.slf4j.simple.*; public class SimpleLoggerTest { String A_KEY = SimpleLogger.LOG_KEY_PREFIX + "a"; @@ -104,7 +105,7 @@ public class SimpleLoggerTest { System.setErr(replacement); simpleLogger.info("hello"); replacement.flush(); - assertTrue(bout.toString().contains("INFO org.slf4j.impl.SimpleLoggerTest - hello")); + assertTrue(bout.toString().contains("INFO "+this.getClass().getName()+" - hello")); } @Test @@ -118,6 +119,6 @@ public class SimpleLoggerTest { simpleLogger.info("hello"); replacement.flush(); - assertTrue(bout.toString().contains("INFO org.slf4j.impl.SimpleLoggerTest - hello")); + assertTrue(bout.toString().contains("INFO "+this.getClass().getName()+" - hello")); } }