[ 
https://issues.apache.org/jira/browse/MRESOLVER-36?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16429735#comment-16429735
 ] 

ASF GitHub Bot commented on MRESOLVER-36:
-----------------------------------------

olamy closed pull request #13: [MRESOLVER-36] Change internal logging to sl4j
URL: https://github.com/apache/maven-resolver/pull/13
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git a/maven-resolver-connector-basic/pom.xml 
b/maven-resolver-connector-basic/pom.xml
index 781d2467..0e896bc8 100644
--- a/maven-resolver-connector-basic/pom.xml
+++ b/maven-resolver-connector-basic/pom.xml
@@ -59,6 +59,16 @@
       <scope>provided</scope>
       <optional>true</optional>
     </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-api</artifactId>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+       <groupId>org.slf4j</groupId>
+       <artifactId>slf4j-simple</artifactId>
+       <scope>test</scope>
+    </dependency>
     <dependency>
       <groupId>org.sonatype.sisu</groupId>
       <artifactId>sisu-guice</artifactId>
diff --git 
a/maven-resolver-connector-basic/src/main/java/org/eclipse/aether/connector/basic/BasicRepositoryConnector.java
 
b/maven-resolver-connector-basic/src/main/java/org/eclipse/aether/connector/basic/BasicRepositoryConnector.java
index bc1ee35e..87c81915 100644
--- 
a/maven-resolver-connector-basic/src/main/java/org/eclipse/aether/connector/basic/BasicRepositoryConnector.java
+++ 
b/maven-resolver-connector-basic/src/main/java/org/eclipse/aether/connector/basic/BasicRepositoryConnector.java
@@ -54,7 +54,6 @@
 import org.eclipse.aether.spi.connector.transport.Transporter;
 import org.eclipse.aether.spi.connector.transport.TransporterProvider;
 import org.eclipse.aether.spi.io.FileProcessor;
-import org.eclipse.aether.spi.log.Logger;
 import org.eclipse.aether.transfer.ChecksumFailureException;
 import org.eclipse.aether.transfer.NoRepositoryConnectorException;
 import org.eclipse.aether.transfer.NoRepositoryLayoutException;
@@ -65,6 +64,8 @@
 import org.eclipse.aether.util.ConfigUtils;
 import org.eclipse.aether.util.concurrency.RunnableErrorForwarder;
 import org.eclipse.aether.util.concurrency.WorkerThreadFactory;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  */
@@ -80,7 +81,7 @@
 
     private static final String CONFIG_PROP_SMART_CHECKSUMS = 
"aether.connector.smartChecksums";
 
-    private final Logger logger;
+    private static final Logger LOGGER = LoggerFactory.getLogger( 
BasicRepositoryConnector.class );
 
     private final FileProcessor fileProcessor;
 
@@ -108,8 +109,7 @@
 
     BasicRepositoryConnector( RepositorySystemSession session, 
RemoteRepository repository,
                                      TransporterProvider transporterProvider, 
RepositoryLayoutProvider layoutProvider,
-                                     ChecksumPolicyProvider 
checksumPolicyProvider, FileProcessor fileProcessor,
-                                     Logger logger )
+                                     ChecksumPolicyProvider 
checksumPolicyProvider, FileProcessor fileProcessor )
         throws NoRepositoryConnectorException
     {
         try
@@ -133,7 +133,6 @@
         this.session = session;
         this.repository = repository;
         this.fileProcessor = fileProcessor;
-        this.logger = logger;
 
         maxThreads = ConfigUtils.getInteger( session, 5, CONFIG_PROP_THREADS, 
"maven.artifact.threads" );
         smartChecksums = ConfigUtils.getBoolean( session, true, 
CONFIG_PROP_SMART_CHECKSUMS );
@@ -150,7 +149,7 @@
             ConfigUtils.getInteger( session, 
ConfigurationProperties.DEFAULT_REQUEST_TIMEOUT,
                                     ConfigurationProperties.REQUEST_TIMEOUT + 
'.' + repository.getId(),
                                     ConfigurationProperties.REQUEST_TIMEOUT );
-        partialFileFactory = new PartialFile.Factory( resumeDownloads, 
resumeThreshold, requestTimeout, logger );
+        partialFileFactory = new PartialFile.Factory( resumeDownloads, 
resumeThreshold, requestTimeout );
     }
 
     private Executor getExecutor( Collection<?> artifacts, Collection<?> 
metadatas )
@@ -403,7 +402,7 @@ protected void runTask()
             super( path, listener );
             this.file = requireNonNull( file, "destination file cannot be 
null" );
             checksumValidator =
-                new ChecksumValidator( logger, file, fileProcessor, this, 
checksumPolicy, safe( checksums ) );
+                new ChecksumValidator( file, fileProcessor, this, 
checksumPolicy, safe( checksums ) );
         }
 
         public void checkRemoteAccess()
@@ -438,7 +437,7 @@ protected void runTask()
             PartialFile partFile = partialFileFactory.newInstance( file, this 
);
             if ( partFile == null )
             {
-                logger.debug( "Concurrent download of " + file + " just 
finished, skipping download" );
+                LOGGER.debug( "Concurrent download of {} just finished, 
skipping download", file );
                 return;
             }
 
@@ -535,13 +534,13 @@ private void uploadChecksums( File file, URI location )
             catch ( IOException e )
             {
                 String msg = "Failed to upload checksums for " + file + ": " + 
e.getMessage();
-                if ( logger.isDebugEnabled() )
+                if ( LOGGER.isDebugEnabled() )
                 {
-                    logger.warn( msg, e );
+                    LOGGER.warn( msg, e );
                 }
                 else
                 {
-                    logger.warn( msg );
+                    LOGGER.warn( msg );
                 }
             }
         }
@@ -559,13 +558,13 @@ private void uploadChecksum( URI location, Object 
checksum )
             catch ( Exception e )
             {
                 String msg = "Failed to upload checksum " + location + ": " + 
e.getMessage();
-                if ( logger.isDebugEnabled() )
+                if ( LOGGER.isDebugEnabled() )
                 {
-                    logger.warn( msg, e );
+                    LOGGER.warn( msg, e );
                 }
                 else
                 {
-                    logger.warn( msg );
+                    LOGGER.warn( msg );
                 }
             }
         }
diff --git 
a/maven-resolver-connector-basic/src/main/java/org/eclipse/aether/connector/basic/BasicRepositoryConnectorFactory.java
 
b/maven-resolver-connector-basic/src/main/java/org/eclipse/aether/connector/basic/BasicRepositoryConnectorFactory.java
index c2187443..16f547a7 100644
--- 
a/maven-resolver-connector-basic/src/main/java/org/eclipse/aether/connector/basic/BasicRepositoryConnectorFactory.java
+++ 
b/maven-resolver-connector-basic/src/main/java/org/eclipse/aether/connector/basic/BasicRepositoryConnectorFactory.java
@@ -34,9 +34,6 @@
 import org.eclipse.aether.spi.io.FileProcessor;
 import org.eclipse.aether.spi.locator.Service;
 import org.eclipse.aether.spi.locator.ServiceLocator;
-import org.eclipse.aether.spi.log.Logger;
-import org.eclipse.aether.spi.log.LoggerFactory;
-import org.eclipse.aether.spi.log.NullLoggerFactory;
 import org.eclipse.aether.transfer.NoRepositoryConnectorException;
 
 /**
@@ -48,9 +45,6 @@
 public final class BasicRepositoryConnectorFactory
     implements RepositoryConnectorFactory, Service
 {
-
-    private Logger logger = NullLoggerFactory.LOGGER;
-
     private TransporterProvider transporterProvider;
 
     private RepositoryLayoutProvider layoutProvider;
@@ -73,37 +67,22 @@ public BasicRepositoryConnectorFactory()
 
     @Inject
     BasicRepositoryConnectorFactory( TransporterProvider transporterProvider, 
RepositoryLayoutProvider layoutProvider,
-                                     ChecksumPolicyProvider 
checksumPolicyProvider, FileProcessor fileProcessor,
-                                     LoggerFactory loggerFactory )
+                                     ChecksumPolicyProvider 
checksumPolicyProvider, FileProcessor fileProcessor )
     {
         setTransporterProvider( transporterProvider );
         setRepositoryLayoutProvider( layoutProvider );
         setChecksumPolicyProvider( checksumPolicyProvider );
         setFileProcessor( fileProcessor );
-        setLoggerFactory( loggerFactory );
     }
 
     public void initService( ServiceLocator locator )
     {
-        setLoggerFactory( locator.getService( LoggerFactory.class ) );
         setTransporterProvider( locator.getService( TransporterProvider.class 
) );
         setRepositoryLayoutProvider( locator.getService( 
RepositoryLayoutProvider.class ) );
         setChecksumPolicyProvider( locator.getService( 
ChecksumPolicyProvider.class ) );
         setFileProcessor( locator.getService( FileProcessor.class ) );
     }
 
-    /**
-     * Sets the logger factory to use for this component.
-     * 
-     * @param loggerFactory The logger factory to use, may be {@code null} to 
disable logging.
-     * @return This component for chaining, never {@code null}.
-     */
-    public BasicRepositoryConnectorFactory setLoggerFactory( LoggerFactory 
loggerFactory )
-    {
-        this.logger = NullLoggerFactory.getSafeLogger( loggerFactory, 
BasicRepositoryConnector.class );
-        return this;
-    }
-
     /**
      * Sets the transporter provider to use for this component.
      *
@@ -173,7 +152,7 @@ public RepositoryConnector newInstance( 
RepositorySystemSession session, RemoteR
         throws NoRepositoryConnectorException
     {
         return new BasicRepositoryConnector( session, repository, 
transporterProvider, layoutProvider,
-                                             checksumPolicyProvider, 
fileProcessor, logger );
+                                             checksumPolicyProvider, 
fileProcessor );
     }
 
 }
diff --git 
a/maven-resolver-connector-basic/src/main/java/org/eclipse/aether/connector/basic/ChecksumValidator.java
 
b/maven-resolver-connector-basic/src/main/java/org/eclipse/aether/connector/basic/ChecksumValidator.java
index 3b1371d7..d3db2629 100644
--- 
a/maven-resolver-connector-basic/src/main/java/org/eclipse/aether/connector/basic/ChecksumValidator.java
+++ 
b/maven-resolver-connector-basic/src/main/java/org/eclipse/aether/connector/basic/ChecksumValidator.java
@@ -32,9 +32,10 @@
 import org.eclipse.aether.spi.connector.checksum.ChecksumPolicy;
 import org.eclipse.aether.spi.connector.layout.RepositoryLayout.Checksum;
 import org.eclipse.aether.spi.io.FileProcessor;
-import org.eclipse.aether.spi.log.Logger;
 import org.eclipse.aether.transfer.ChecksumFailureException;
 import org.eclipse.aether.util.ChecksumUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Performs checksum validation for a downloaded file.
@@ -50,7 +51,7 @@ boolean fetchChecksum( URI remote, File local )
 
     }
 
-    private final Logger logger;
+    private static final Logger LOGGER = LoggerFactory.getLogger( 
ChecksumValidator.class );
 
     private final File dataFile;
 
@@ -66,11 +67,10 @@ boolean fetchChecksum( URI remote, File local )
 
     private final Map<File, Object> checksumFiles;
 
-    ChecksumValidator( Logger logger, File dataFile, FileProcessor 
fileProcessor,
+    ChecksumValidator( File dataFile, FileProcessor fileProcessor,
                               ChecksumFetcher checksumFetcher, ChecksumPolicy 
checksumPolicy,
                               Collection<Checksum> checksums )
     {
-        this.logger = logger;
         this.dataFile = dataFile;
         this.tempFiles = new HashSet<File>();
         this.fileProcessor = fileProcessor;
@@ -213,7 +213,7 @@ private void clearTempFiles()
         {
             if ( !file.delete() && file.exists() )
             {
-                logger.debug( "Could not delete temorary file " + file );
+                LOGGER.debug( "Could not delete temporary file {}", file );
             }
         }
         tempFiles.clear();
@@ -251,7 +251,7 @@ public void commit()
             }
             catch ( IOException e )
             {
-                logger.debug( "Failed to write checksum file " + checksumFile 
+ ": " + e.getMessage(), e );
+                LOGGER.debug( "Failed to write checksum file {}: {}", 
checksumFile, e.getMessage(), e );
             }
         }
         checksumFiles.clear();
diff --git 
a/maven-resolver-connector-basic/src/main/java/org/eclipse/aether/connector/basic/PartialFile.java
 
b/maven-resolver-connector-basic/src/main/java/org/eclipse/aether/connector/basic/PartialFile.java
index 018e2d5a..8b8dcfee 100644
--- 
a/maven-resolver-connector-basic/src/main/java/org/eclipse/aether/connector/basic/PartialFile.java
+++ 
b/maven-resolver-connector-basic/src/main/java/org/eclipse/aether/connector/basic/PartialFile.java
@@ -19,6 +19,9 @@
  * under the License.
  */
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 import java.io.Closeable;
 import java.io.File;
 import java.io.IOException;
@@ -29,8 +32,6 @@
 import java.util.UUID;
 import java.util.concurrent.atomic.AtomicBoolean;
 
-import org.eclipse.aether.spi.log.Logger;
-
 /**
  * A partially downloaded file with optional support for resume. If resume is 
enabled, a well-known location is used for
  * the partial file in combination with a lock file to prevent concurrent 
requests from corrupting it (and wasting
@@ -61,16 +62,16 @@ void checkRemoteAccess()
 
         private final AtomicBoolean concurrent;
 
-        LockFile( File partFile, int requestTimeout, RemoteAccessChecker 
checker, Logger logger )
+        LockFile( File partFile, int requestTimeout, RemoteAccessChecker 
checker )
             throws Exception
         {
             lockFile = new File( partFile.getPath() + EXT_LOCK );
             concurrent = new AtomicBoolean( false );
-            lock = lock( lockFile, partFile, requestTimeout, checker, logger, 
concurrent );
+            lock = lock( lockFile, partFile, requestTimeout, checker, 
concurrent );
         }
 
         private static FileLock lock( File lockFile, File partFile, int 
requestTimeout, RemoteAccessChecker checker,
-                                      Logger logger, AtomicBoolean concurrent )
+                                      AtomicBoolean concurrent )
             throws Exception
         {
             boolean interrupted = false;
@@ -97,7 +98,7 @@ private static FileLock lock( File lockFile, File partFile, 
int requestTimeout,
                              * at least knows about the file and is accessible 
to us.
                              */
                             checker.checkRemoteAccess();
-                            logger.debug( "Concurrent download of " + partFile 
+ " in progress, awaiting completion" );
+                            LOGGER.debug( "Concurrent download of {} in 
progress, awaiting completion", partFile );
                         }
                         lastLength = currentLength;
                         lastTime = currentTime;
@@ -257,14 +258,13 @@ public String toString()
 
         private final int requestTimeout;
 
-        private final Logger logger;
+        private static final Logger LOGGER = LoggerFactory.getLogger( 
Factory.class );
 
-        Factory( boolean resume, long resumeThreshold, int requestTimeout, 
Logger logger )
+        Factory( boolean resume, long resumeThreshold, int requestTimeout )
         {
             this.resume = resume;
             this.resumeThreshold = resumeThreshold;
             this.requestTimeout = requestTimeout;
-            this.logger = logger;
         }
 
         public PartialFile newInstance( File dstFile, RemoteAccessChecker 
checker )
@@ -275,7 +275,7 @@ public PartialFile newInstance( File dstFile, 
RemoteAccessChecker checker )
                 File partFile = new File( dstFile.getPath() + EXT_PART );
 
                 long reqTimestamp = System.currentTimeMillis();
-                LockFile lockFile = new LockFile( partFile, requestTimeout, 
checker, logger );
+                LockFile lockFile = new LockFile( partFile, requestTimeout, 
checker );
                 if ( lockFile.isConcurrent() && dstFile.lastModified() >= 
reqTimestamp - 100L )
                 {
                     lockFile.close();
@@ -287,12 +287,12 @@ public PartialFile newInstance( File dstFile, 
RemoteAccessChecker checker )
                     {
                         throw new IOException( partFile.exists() ? "Path 
exists but is not a file" : "Unknown error" );
                     }
-                    return new PartialFile( partFile, lockFile, 
resumeThreshold, logger );
+                    return new PartialFile( partFile, lockFile, 
resumeThreshold );
                 }
                 catch ( IOException e )
                 {
                     lockFile.close();
-                    logger.debug( "Cannot create resumable file " + 
partFile.getAbsolutePath() + ": " + e );
+                    LOGGER.debug( "Cannot create resumable file {}: {}", 
partFile.getAbsolutePath(), e.getMessage(), e );
                     // fall through and try non-resumable/temporary file 
location
                 }
             }
@@ -300,7 +300,7 @@ public PartialFile newInstance( File dstFile, 
RemoteAccessChecker checker )
             File tempFile =
                 File.createTempFile( dstFile.getName() + '-' + 
UUID.randomUUID().toString().replace( "-", "" ), ".tmp",
                                      dstFile.getParentFile() );
-            return new PartialFile( tempFile, logger );
+            return new PartialFile( tempFile );
         }
 
     }
@@ -311,19 +311,18 @@ public PartialFile newInstance( File dstFile, 
RemoteAccessChecker checker )
 
     private final long threshold;
 
-    private final Logger logger;
+    private static final Logger LOGGER = LoggerFactory.getLogger( 
PartialFile.class );
 
-    private PartialFile( File partFile, Logger logger )
+    private PartialFile( File partFile )
     {
-        this( partFile, null, 0L, logger );
+        this( partFile, null, 0L );
     }
 
-    private PartialFile( File partFile, LockFile lockFile, long threshold, 
Logger logger )
+    private PartialFile( File partFile, LockFile lockFile, long threshold )
     {
         this.partFile = partFile;
         this.lockFile = lockFile;
         this.threshold = threshold;
-        this.logger = logger;
     }
 
     public File getFile()
@@ -342,7 +341,7 @@ public void close() throws IOException
         {
             if ( !partFile.delete() && partFile.exists() )
             {
-                logger.debug( "Could not delete temorary file " + partFile );
+                LOGGER.debug( "Could not delete temporary file {}", partFile );
             }
         }
         if ( lockFile != null )
diff --git 
a/maven-resolver-connector-basic/src/test/java/org/eclipse/aether/connector/basic/ChecksumValidatorTest.java
 
b/maven-resolver-connector-basic/src/test/java/org/eclipse/aether/connector/basic/ChecksumValidatorTest.java
index 6d677686..6d36efac 100644
--- 
a/maven-resolver-connector-basic/src/test/java/org/eclipse/aether/connector/basic/ChecksumValidatorTest.java
+++ 
b/maven-resolver-connector-basic/src/test/java/org/eclipse/aether/connector/basic/ChecksumValidatorTest.java
@@ -33,7 +33,6 @@
 
 import org.eclipse.aether.internal.test.util.TestFileProcessor;
 import org.eclipse.aether.internal.test.util.TestFileUtils;
-import org.eclipse.aether.internal.test.util.TestLoggerFactory;
 import org.eclipse.aether.spi.connector.checksum.ChecksumPolicy;
 import org.eclipse.aether.spi.connector.layout.RepositoryLayout;
 import org.eclipse.aether.transfer.ChecksumFailureException;
@@ -196,8 +195,7 @@ private static URI toUri( String algo )
 
     private ChecksumValidator newValidator( String... algos )
     {
-        return new ChecksumValidator( new TestLoggerFactory().getLogger( "" ), 
dataFile, new TestFileProcessor(),
-                                      fetcher, policy, newChecksums( algos ) );
+        return new ChecksumValidator( dataFile, new TestFileProcessor(), 
fetcher, policy, newChecksums( algos ) );
     }
 
     private Map<String, ?> checksums( String... algoDigestPairs )
diff --git 
a/maven-resolver-connector-basic/src/test/java/org/eclipse/aether/connector/basic/PartialFileTest.java
 
b/maven-resolver-connector-basic/src/test/java/org/eclipse/aether/connector/basic/PartialFileTest.java
index 61a83a07..b1e8e4da 100644
--- 
a/maven-resolver-connector-basic/src/test/java/org/eclipse/aether/connector/basic/PartialFileTest.java
+++ 
b/maven-resolver-connector-basic/src/test/java/org/eclipse/aether/connector/basic/PartialFileTest.java
@@ -35,7 +35,6 @@
 import java.util.concurrent.CountDownLatch;
 
 import org.eclipse.aether.internal.test.util.TestFileUtils;
-import org.eclipse.aether.internal.test.util.TestLoggerFactory;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
@@ -212,8 +211,7 @@ private PartialFile newPartialFile( long resumeThreshold, 
int requestTimeout )
         throws Exception
     {
         PartialFile.Factory factory =
-            new PartialFile.Factory( resumeThreshold >= 0L, resumeThreshold, 
requestTimeout,
-                                     new TestLoggerFactory().getLogger( "" ) );
+            new PartialFile.Factory( resumeThreshold >= 0L, resumeThreshold, 
requestTimeout );
         PartialFile partFile = factory.newInstance( dstFile, 
remoteAccessChecker );
         if ( partFile != null )
         {
diff --git a/maven-resolver-demos/maven-resolver-demo-snippets/pom.xml 
b/maven-resolver-demos/maven-resolver-demo-snippets/pom.xml
index 758ea172..99a11503 100644
--- a/maven-resolver-demos/maven-resolver-demo-snippets/pom.xml
+++ b/maven-resolver-demos/maven-resolver-demo-snippets/pom.xml
@@ -107,5 +107,15 @@
       <classifier>no_aop</classifier>
       <optional>true</optional>
     </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-api</artifactId>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-simple</artifactId>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
 </project>
diff --git 
a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/manual/ManualRepositorySystemFactory.java
 
b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/manual/ManualRepositorySystemFactory.java
index 04103d63..06b2a591 100644
--- 
a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/manual/ManualRepositorySystemFactory.java
+++ 
b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/manual/ManualRepositorySystemFactory.java
@@ -27,6 +27,8 @@
 import org.eclipse.aether.spi.connector.transport.TransporterFactory;
 import org.eclipse.aether.transport.file.FileTransporterFactory;
 import org.eclipse.aether.transport.http.HttpTransporterFactory;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * A factory for repository system instances that employs Maven Artifact 
Resolver's built-in service locator
@@ -34,6 +36,7 @@
  */
 public class ManualRepositorySystemFactory
 {
+    private static final Logger LOGGER = LoggerFactory.getLogger( 
ManualRepositorySystemFactory.class );
 
     public static RepositorySystem newRepositorySystem()
     {
@@ -52,7 +55,8 @@ public static RepositorySystem newRepositorySystem()
             @Override
             public void serviceCreationFailed( Class<?> type, Class<?> impl, 
Throwable exception )
             {
-                exception.printStackTrace();
+               LOGGER.error( "Service creation failed for {} implementation 
{}: {}",
+                        type, impl, exception.getMessage(), exception );
             }
         } );
 
diff --git a/maven-resolver-impl/pom.xml b/maven-resolver-impl/pom.xml
index 5864ef07..ddfa9fc0 100644
--- a/maven-resolver-impl/pom.xml
+++ b/maven-resolver-impl/pom.xml
@@ -78,6 +78,11 @@
       <scope>provided</scope>
       <optional>true</optional>
     </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-simple</artifactId>
+      <scope>test</scope>
+    </dependency>
     <dependency>
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
diff --git 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/impl/DefaultServiceLocator.java
 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/impl/DefaultServiceLocator.java
index 7d30cb35..37f73e86 100644
--- 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/impl/DefaultServiceLocator.java
+++ 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/impl/DefaultServiceLocator.java
@@ -215,10 +215,7 @@ public DefaultServiceLocator()
         addService( LocalRepositoryProvider.class, 
DefaultLocalRepositoryProvider.class );
         addService( LocalRepositoryManagerFactory.class, 
SimpleLocalRepositoryManagerFactory.class );
         addService( LocalRepositoryManagerFactory.class, 
EnhancedLocalRepositoryManagerFactory.class );
-        if ( Slf4jLoggerFactory.isSlf4jAvailable() )
-        {
-            addService( LoggerFactory.class, Slf4jLoggerFactory.class );
-        }
+        addService( LoggerFactory.class, Slf4jLoggerFactory.class );
     }
 
     private <T> Entry<T> getEntry( Class<T> type, boolean create )
diff --git 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/impl/guice/AetherModule.java
 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/impl/guice/AetherModule.java
index 3fb7451b..002e4b6a 100644
--- 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/impl/guice/AetherModule.java
+++ 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/impl/guice/AetherModule.java
@@ -70,7 +70,6 @@
 import org.eclipse.aether.spi.io.FileProcessor;
 import org.eclipse.aether.spi.localrepo.LocalRepositoryManagerFactory;
 import org.eclipse.aether.spi.log.LoggerFactory;
-import org.eclipse.aether.spi.log.NullLoggerFactory;
 import org.slf4j.ILoggerFactory;
 
 import com.google.inject.AbstractModule;
@@ -146,21 +145,9 @@ protected void configure()
         .to( SimpleLocalRepositoryManagerFactory.class ).in( Singleton.class );
         bind( LocalRepositoryManagerFactory.class ).annotatedWith( 
Names.named( "enhanced" ) ) //
         .to( EnhancedLocalRepositoryManagerFactory.class ).in( Singleton.class 
);
-        if ( Slf4jLoggerFactory.isSlf4jAvailable() )
-        {
-            bindSlf4j();
-        }
-        else
-        {
-            bind( LoggerFactory.class ) //
-            .toInstance( NullLoggerFactory.INSTANCE );
-        }
 
-    }
-
-    private void bindSlf4j()
-    {
         install( new Slf4jModule() );
+
     }
 
     @Provides
@@ -168,7 +155,7 @@ private void bindSlf4j()
     Set<LocalRepositoryManagerFactory> provideLocalRepositoryManagerFactories( 
@Named( "simple" ) LocalRepositoryManagerFactory simple,
                                                                                
@Named( "enhanced" ) LocalRepositoryManagerFactory enhanced )
     {
-        Set<LocalRepositoryManagerFactory> factories = new 
HashSet<LocalRepositoryManagerFactory>();
+        Set<LocalRepositoryManagerFactory> factories = new HashSet<>();
         factories.add( simple );
         factories.add( enhanced );
         return Collections.unmodifiableSet( factories );
@@ -178,7 +165,7 @@ private void bindSlf4j()
     @Singleton
     Set<RepositoryLayoutFactory> provideRepositoryLayoutFactories( @Named( 
"maven2" ) RepositoryLayoutFactory maven2 )
     {
-        Set<RepositoryLayoutFactory> factories = new 
HashSet<RepositoryLayoutFactory>();
+        Set<RepositoryLayoutFactory> factories = new HashSet<>();
         factories.add( maven2 );
         return Collections.unmodifiableSet( factories );
     }
diff --git 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/AbstractChecksumPolicy.java
 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/AbstractChecksumPolicy.java
index 368e31b6..7fe08227 100644
--- 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/AbstractChecksumPolicy.java
+++ 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/AbstractChecksumPolicy.java
@@ -20,24 +20,21 @@
  */
 
 import org.eclipse.aether.spi.connector.checksum.ChecksumPolicy;
-import org.eclipse.aether.spi.log.Logger;
-import org.eclipse.aether.spi.log.LoggerFactory;
-import org.eclipse.aether.spi.log.NullLoggerFactory;
 import org.eclipse.aether.transfer.ChecksumFailureException;
 import org.eclipse.aether.transfer.TransferResource;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 abstract class AbstractChecksumPolicy
     implements ChecksumPolicy
-
 {
 
-    protected final Logger logger;
+    protected final Logger logger = LoggerFactory.getLogger( getClass() );
 
     protected final TransferResource resource;
 
-    protected AbstractChecksumPolicy( LoggerFactory loggerFactory, 
TransferResource resource )
+    protected AbstractChecksumPolicy( TransferResource resource )
     {
-        this.logger = NullLoggerFactory.getSafeLogger( loggerFactory, 
getClass() );
         this.resource = resource;
     }
 
@@ -58,7 +55,7 @@ public void onChecksumMismatch( String algorithm, int kind, 
ChecksumFailureExcep
     public void onChecksumError( String algorithm, int kind, 
ChecksumFailureException exception )
         throws ChecksumFailureException
     {
-        logger.debug( "Could not validate " + algorithm + " checksum for " + 
resource.getResourceName(), exception );
+        logger.debug( "Could not validate {} checksum for {}", algorithm, 
resource.getResourceName(), exception );
     }
 
     public void onNoMoreChecksums()
diff --git 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultArtifactResolver.java
 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultArtifactResolver.java
index 9ccffc85..c4745c5e 100644
--- 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultArtifactResolver.java
+++ 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultArtifactResolver.java
@@ -69,14 +69,13 @@
 import org.eclipse.aether.spi.io.FileProcessor;
 import org.eclipse.aether.spi.locator.Service;
 import org.eclipse.aether.spi.locator.ServiceLocator;
-import org.eclipse.aether.spi.log.Logger;
-import org.eclipse.aether.spi.log.LoggerFactory;
-import org.eclipse.aether.spi.log.NullLoggerFactory;
 import org.eclipse.aether.transfer.ArtifactNotFoundException;
 import org.eclipse.aether.transfer.ArtifactTransferException;
 import org.eclipse.aether.transfer.NoRepositoryConnectorException;
 import org.eclipse.aether.transfer.RepositoryOfflineException;
 import org.eclipse.aether.util.ConfigUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  */
@@ -87,7 +86,7 @@
 
     private static final String CONFIG_PROP_SNAPSHOT_NORMALIZATION = 
"aether.artifactResolver.snapshotNormalization";
 
-    private Logger logger = NullLoggerFactory.LOGGER;
+    private static final Logger LOGGER = LoggerFactory.getLogger( 
DefaultArtifactResolver.class );
 
     private FileProcessor fileProcessor;
 
@@ -115,7 +114,7 @@ public DefaultArtifactResolver()
                              VersionResolver versionResolver, 
UpdateCheckManager updateCheckManager,
                              RepositoryConnectorProvider 
repositoryConnectorProvider,
                              RemoteRepositoryManager remoteRepositoryManager, 
SyncContextFactory syncContextFactory,
-                             OfflineController offlineController, 
LoggerFactory loggerFactory )
+                             OfflineController offlineController )
     {
         setFileProcessor( fileProcessor );
         setRepositoryEventDispatcher( repositoryEventDispatcher );
@@ -125,12 +124,10 @@ public DefaultArtifactResolver()
         setRemoteRepositoryManager( remoteRepositoryManager );
         setSyncContextFactory( syncContextFactory );
         setOfflineController( offlineController );
-        setLoggerFactory( loggerFactory );
     }
 
     public void initService( ServiceLocator locator )
     {
-        setLoggerFactory( locator.getService( LoggerFactory.class ) );
         setFileProcessor( locator.getService( FileProcessor.class ) );
         setRepositoryEventDispatcher( locator.getService( 
RepositoryEventDispatcher.class ) );
         setVersionResolver( locator.getService( VersionResolver.class ) );
@@ -141,12 +138,6 @@ public void initService( ServiceLocator locator )
         setOfflineController( locator.getService( OfflineController.class ) );
     }
 
-    public DefaultArtifactResolver setLoggerFactory( LoggerFactory 
loggerFactory )
-    {
-        this.logger = NullLoggerFactory.getSafeLogger( loggerFactory, 
getClass() );
-        return this;
-    }
-
     public DefaultArtifactResolver setFileProcessor( FileProcessor 
fileProcessor )
     {
         this.fileProcessor = requireNonNull( fileProcessor, "file processor 
cannot be null" );
@@ -348,7 +339,7 @@ public ArtifactResult resolveArtifact( 
RepositorySystemSession session, Artifact
             }
             else if ( local.getFile() != null )
             {
-                logger.debug( "Verifying availability of " + local.getFile() + 
" from " + repos );
+                LOGGER.debug( "Verifying availability of {} from {}", 
local.getFile(), repos );
             }
 
             AtomicBoolean resolved = new AtomicBoolean( false );
@@ -531,7 +522,7 @@ private void performDownloads( RepositorySystemSession 
session, ResolutionGroup
             ArtifactDownload download = new ArtifactDownload();
             download.setArtifact( artifact );
             download.setRequestContext( item.request.getRequestContext() );
-            download.setListener( SafeTransferListener.wrap( session, logger ) 
);
+            download.setListener( SafeTransferListener.wrap( session ) );
             download.setTrace( item.trace );
             if ( item.local.getFile() != null )
             {
diff --git 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultChecksumPolicyProvider.java
 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultChecksumPolicyProvider.java
index 20c04844..2f96646a 100644
--- 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultChecksumPolicyProvider.java
+++ 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultChecksumPolicyProvider.java
@@ -29,15 +29,13 @@
 import org.eclipse.aether.spi.connector.checksum.ChecksumPolicyProvider;
 import org.eclipse.aether.spi.locator.Service;
 import org.eclipse.aether.spi.locator.ServiceLocator;
-import org.eclipse.aether.spi.log.LoggerFactory;
-import org.eclipse.aether.spi.log.NullLoggerFactory;
 import org.eclipse.aether.transfer.TransferResource;
 
 /**
  */
 @Named
 public final class DefaultChecksumPolicyProvider
-    implements ChecksumPolicyProvider, Service
+    implements ChecksumPolicyProvider
 {
 
     private static final int ORDINAL_IGNORE = 0;
@@ -46,30 +44,11 @@
 
     private static final int ORDINAL_FAIL = 2;
 
-    private LoggerFactory loggerFactory = NullLoggerFactory.INSTANCE;
-
     public DefaultChecksumPolicyProvider()
     {
         // enables default constructor
     }
 
-    @Inject
-    DefaultChecksumPolicyProvider( LoggerFactory loggerFactory )
-    {
-        setLoggerFactory( loggerFactory );
-    }
-
-    public void initService( ServiceLocator locator )
-    {
-        setLoggerFactory( locator.getService( LoggerFactory.class ) );
-    }
-
-    public DefaultChecksumPolicyProvider setLoggerFactory( LoggerFactory 
loggerFactory )
-    {
-        this.loggerFactory = loggerFactory;
-        return this;
-    }
-
     public ChecksumPolicy newChecksumPolicy( RepositorySystemSession session, 
RemoteRepository repository,
                                              TransferResource resource, String 
policy )
     {
@@ -79,9 +58,9 @@ public ChecksumPolicy newChecksumPolicy( 
RepositorySystemSession session, Remote
         }
         if ( RepositoryPolicy.CHECKSUM_POLICY_FAIL.equals( policy ) )
         {
-            return new FailChecksumPolicy( loggerFactory, resource );
+            return new FailChecksumPolicy( resource );
         }
-        return new WarnChecksumPolicy( loggerFactory, resource );
+        return new WarnChecksumPolicy( resource );
     }
 
     public String getEffectiveChecksumPolicy( RepositorySystemSession session, 
String policy1, String policy2 )
diff --git 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultDeployer.java
 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultDeployer.java
index f57a1861..194ce30c 100644
--- 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultDeployer.java
+++ 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultDeployer.java
@@ -64,9 +64,6 @@
 import org.eclipse.aether.spi.io.FileProcessor;
 import org.eclipse.aether.spi.locator.Service;
 import org.eclipse.aether.spi.locator.ServiceLocator;
-import org.eclipse.aether.spi.log.Logger;
-import org.eclipse.aether.spi.log.LoggerFactory;
-import org.eclipse.aether.spi.log.NullLoggerFactory;
 import org.eclipse.aether.transfer.ArtifactTransferException;
 import org.eclipse.aether.transfer.MetadataNotFoundException;
 import org.eclipse.aether.transfer.MetadataTransferException;
@@ -81,9 +78,6 @@
 public class DefaultDeployer
     implements Deployer, Service
 {
-
-    private Logger logger = NullLoggerFactory.LOGGER;
-
     private FileProcessor fileProcessor;
 
     private RepositoryEventDispatcher repositoryEventDispatcher;
@@ -110,7 +104,7 @@ public DefaultDeployer()
                      RepositoryConnectorProvider repositoryConnectorProvider,
                      RemoteRepositoryManager remoteRepositoryManager, 
UpdateCheckManager updateCheckManager,
                      Set<MetadataGeneratorFactory> metadataFactories, 
SyncContextFactory syncContextFactory,
-                     OfflineController offlineController, LoggerFactory 
loggerFactory )
+                     OfflineController offlineController )
     {
         setFileProcessor( fileProcessor );
         setRepositoryEventDispatcher( repositoryEventDispatcher );
@@ -119,13 +113,11 @@ public DefaultDeployer()
         setUpdateCheckManager( updateCheckManager );
         setMetadataGeneratorFactories( metadataFactories );
         setSyncContextFactory( syncContextFactory );
-        setLoggerFactory( loggerFactory );
         setOfflineController( offlineController );
     }
 
     public void initService( ServiceLocator locator )
     {
-        setLoggerFactory( locator.getService( LoggerFactory.class ) );
         setFileProcessor( locator.getService( FileProcessor.class ) );
         setRepositoryEventDispatcher( locator.getService( 
RepositoryEventDispatcher.class ) );
         setRepositoryConnectorProvider( locator.getService( 
RepositoryConnectorProvider.class ) );
@@ -136,12 +128,6 @@ public void initService( ServiceLocator locator )
         setOfflineController( locator.getService( OfflineController.class ) );
     }
 
-    public DefaultDeployer setLoggerFactory( LoggerFactory loggerFactory )
-    {
-        this.logger = NullLoggerFactory.getSafeLogger( loggerFactory, 
getClass() );
-        return this;
-    }
-
     public DefaultDeployer setFileProcessor( FileProcessor fileProcessor )
     {
         this.fileProcessor = requireNonNull( fileProcessor, "file processor 
cannot be null" );
@@ -282,7 +268,7 @@ private DeployResult deploy( SyncContext syncContext, 
RepositorySystemSession se
 
                 ArtifactUpload upload = new ArtifactUpload( artifact, 
artifact.getFile() );
                 upload.setTrace( trace );
-                upload.setListener( new ArtifactUploadListener( catapult, 
upload, logger ) );
+                upload.setListener( new ArtifactUploadListener( catapult, 
upload ) );
                 artifactUploads.add( upload );
             }
 
@@ -390,7 +376,7 @@ private void upload( Collection<MetadataUpload> 
metadataUploads, RepositorySyste
                 download.setMetadata( metadata );
                 download.setFile( dstFile );
                 download.setChecksumPolicy( policy.getChecksumPolicy() );
-                download.setListener( SafeTransferListener.wrap( session, 
logger ) );
+                download.setListener( SafeTransferListener.wrap( session ) );
                 download.setTrace( catapult.getTrace() );
                 connector.get( null, Arrays.asList( download ) );
 
@@ -461,7 +447,7 @@ private void upload( Collection<MetadataUpload> 
metadataUploads, RepositorySyste
 
         MetadataUpload upload = new MetadataUpload( metadata, dstFile );
         upload.setTrace( catapult.getTrace() );
-        upload.setListener( new MetadataUploadListener( catapult, upload, 
logger ) );
+        upload.setListener( new MetadataUploadListener( catapult, upload ) );
         metadataUploads.add( upload );
     }
 
@@ -559,9 +545,9 @@ public void metadataDeployed( Metadata metadata, File file, 
Exception exception
 
         private final ArtifactUpload transfer;
 
-        ArtifactUploadListener( EventCatapult catapult, ArtifactUpload 
transfer, Logger logger )
+        ArtifactUploadListener( EventCatapult catapult, ArtifactUpload 
transfer )
         {
-            super( catapult.getSession(), logger );
+            super( catapult.getSession() );
             this.catapult = catapult;
             this.transfer = transfer;
         }
@@ -598,9 +584,9 @@ public void transferSucceeded( TransferEvent event )
 
         private final MetadataUpload transfer;
 
-        MetadataUploadListener( EventCatapult catapult, MetadataUpload 
transfer, Logger logger )
+        MetadataUploadListener( EventCatapult catapult, MetadataUpload 
transfer )
         {
-            super( catapult.getSession(), logger );
+            super( catapult.getSession() );
             this.catapult = catapult;
             this.transfer = transfer;
         }
diff --git 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultInstaller.java
 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultInstaller.java
index a419fc34..7cd14d04 100644
--- 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultInstaller.java
+++ 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultInstaller.java
@@ -52,9 +52,8 @@
 import org.eclipse.aether.spi.io.FileProcessor;
 import org.eclipse.aether.spi.locator.Service;
 import org.eclipse.aether.spi.locator.ServiceLocator;
-import org.eclipse.aether.spi.log.Logger;
-import org.eclipse.aether.spi.log.LoggerFactory;
-import org.eclipse.aether.spi.log.NullLoggerFactory;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  */
@@ -63,7 +62,7 @@
     implements Installer, Service
 {
 
-    private Logger logger = NullLoggerFactory.LOGGER;
+    private static final Logger LOGGER = LoggerFactory.getLogger( 
DefaultInstaller.class );
 
     private FileProcessor fileProcessor;
 
@@ -80,31 +79,22 @@ public DefaultInstaller()
 
     @Inject
     DefaultInstaller( FileProcessor fileProcessor, RepositoryEventDispatcher 
repositoryEventDispatcher,
-                      Set<MetadataGeneratorFactory> metadataFactories, 
SyncContextFactory syncContextFactory,
-                      LoggerFactory loggerFactory )
+                      Set<MetadataGeneratorFactory> metadataFactories, 
SyncContextFactory syncContextFactory )
     {
         setFileProcessor( fileProcessor );
         setRepositoryEventDispatcher( repositoryEventDispatcher );
         setMetadataGeneratorFactories( metadataFactories );
         setSyncContextFactory( syncContextFactory );
-        setLoggerFactory( loggerFactory );
     }
 
     public void initService( ServiceLocator locator )
     {
-        setLoggerFactory( locator.getService( LoggerFactory.class ) );
         setFileProcessor( locator.getService( FileProcessor.class ) );
         setRepositoryEventDispatcher( locator.getService( 
RepositoryEventDispatcher.class ) );
         setMetadataGeneratorFactories( locator.getServices( 
MetadataGeneratorFactory.class ) );
         setSyncContextFactory( locator.getService( SyncContextFactory.class ) 
);
     }
 
-    public DefaultInstaller setLoggerFactory( LoggerFactory loggerFactory )
-    {
-        this.logger = NullLoggerFactory.getSafeLogger( loggerFactory, 
getClass() );
-        return this;
-    }
-
     public DefaultInstaller setFileProcessor( FileProcessor fileProcessor )
     {
         this.fileProcessor = requireNonNull( fileProcessor, "file processor 
cannot be null" );
@@ -269,7 +259,7 @@ private void install( RepositorySystemSession session, 
RequestTrace trace, Artif
             }
             else
             {
-                logger.debug( "Skipped re-installing " + srcFile + " to " + 
dstFile + ", seems unchanged" );
+                LOGGER.debug( "Skipped re-installing {} to {}, seems 
unchanged", srcFile, dstFile );
             }
 
             lrm.add( session, new LocalArtifactRegistration( artifact ) );
diff --git 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultLocalRepositoryProvider.java
 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultLocalRepositoryProvider.java
index ea89804f..6c80e4bc 100644
--- 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultLocalRepositoryProvider.java
+++ 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultLocalRepositoryProvider.java
@@ -36,9 +36,8 @@
 import org.eclipse.aether.spi.localrepo.LocalRepositoryManagerFactory;
 import org.eclipse.aether.spi.locator.Service;
 import org.eclipse.aether.spi.locator.ServiceLocator;
-import org.eclipse.aether.spi.log.Logger;
-import org.eclipse.aether.spi.log.LoggerFactory;
-import org.eclipse.aether.spi.log.NullLoggerFactory;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  */
@@ -47,7 +46,7 @@
     implements LocalRepositoryProvider, Service
 {
 
-    private Logger logger = NullLoggerFactory.LOGGER;
+    private static final Logger LOGGER = LoggerFactory.getLogger( 
DefaultLocalRepositoryProvider.class );
 
     private Collection<LocalRepositoryManagerFactory> managerFactories = new 
ArrayList<LocalRepositoryManagerFactory>();
 
@@ -57,24 +56,16 @@ public DefaultLocalRepositoryProvider()
     }
 
     @Inject
-    DefaultLocalRepositoryProvider( Set<LocalRepositoryManagerFactory> 
factories, LoggerFactory loggerFactory )
+    DefaultLocalRepositoryProvider( Set<LocalRepositoryManagerFactory> 
factories )
     {
         setLocalRepositoryManagerFactories( factories );
-        setLoggerFactory( loggerFactory );
     }
 
     public void initService( ServiceLocator locator )
     {
-        setLoggerFactory( locator.getService( LoggerFactory.class ) );
         setLocalRepositoryManagerFactories( locator.getServices( 
LocalRepositoryManagerFactory.class ) );
     }
 
-    public DefaultLocalRepositoryProvider setLoggerFactory( LoggerFactory 
loggerFactory )
-    {
-        this.logger = NullLoggerFactory.getSafeLogger( loggerFactory, 
getClass() );
-        return this;
-    }
-
     public DefaultLocalRepositoryProvider addLocalRepositoryManagerFactory( 
LocalRepositoryManagerFactory factory )
     {
         managerFactories.add( requireNonNull( factory, "local repository 
manager factory cannot be null" ) );
@@ -111,7 +102,7 @@ public LocalRepositoryManager newLocalRepositoryManager( 
RepositorySystemSession
             {
                 LocalRepositoryManager manager = 
factory.getComponent().newInstance( session, repository );
 
-                if ( logger.isDebugEnabled() )
+                if ( LOGGER.isDebugEnabled() )
                 {
                     StringBuilder buffer = new StringBuilder( 256 );
                     buffer.append( "Using manager " ).append( 
manager.getClass().getSimpleName() );
@@ -119,7 +110,7 @@ public LocalRepositoryManager newLocalRepositoryManager( 
RepositorySystemSession
                     buffer.append( " with priority " ).append( 
factory.getPriority() );
                     buffer.append( " for " ).append( repository.getBasedir() );
 
-                    logger.debug( buffer.toString() );
+                    LOGGER.debug( buffer.toString() );
                 }
 
                 return manager;
@@ -130,12 +121,12 @@ public LocalRepositoryManager newLocalRepositoryManager( 
RepositorySystemSession
                 errors.add( e );
             }
         }
-        if ( logger.isDebugEnabled() && errors.size() > 1 )
+        if ( LOGGER.isDebugEnabled() && errors.size() > 1 )
         {
             String msg = "Could not obtain local repository manager for " + 
repository;
             for ( Exception e : errors )
             {
-                logger.debug( msg, e );
+                LOGGER.debug( msg, e );
             }
         }
 
diff --git 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultMetadataResolver.java
 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultMetadataResolver.java
index 509b3b16..244fc5a9 100644
--- 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultMetadataResolver.java
+++ 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultMetadataResolver.java
@@ -65,9 +65,6 @@
 import org.eclipse.aether.spi.connector.RepositoryConnector;
 import org.eclipse.aether.spi.locator.Service;
 import org.eclipse.aether.spi.locator.ServiceLocator;
-import org.eclipse.aether.spi.log.Logger;
-import org.eclipse.aether.spi.log.LoggerFactory;
-import org.eclipse.aether.spi.log.NullLoggerFactory;
 import org.eclipse.aether.transfer.MetadataNotFoundException;
 import org.eclipse.aether.transfer.MetadataTransferException;
 import org.eclipse.aether.transfer.NoRepositoryConnectorException;
@@ -85,8 +82,6 @@
 
     private static final String CONFIG_PROP_THREADS = 
"aether.metadataResolver.threads";
 
-    private Logger logger = NullLoggerFactory.LOGGER;
-
     private RepositoryEventDispatcher repositoryEventDispatcher;
 
     private UpdateCheckManager updateCheckManager;
@@ -109,7 +104,7 @@ public DefaultMetadataResolver()
                              UpdateCheckManager updateCheckManager,
                              RepositoryConnectorProvider 
repositoryConnectorProvider,
                              RemoteRepositoryManager remoteRepositoryManager, 
SyncContextFactory syncContextFactory,
-                             OfflineController offlineController, 
LoggerFactory loggerFactory )
+                             OfflineController offlineController )
     {
         setRepositoryEventDispatcher( repositoryEventDispatcher );
         setUpdateCheckManager( updateCheckManager );
@@ -117,12 +112,10 @@ public DefaultMetadataResolver()
         setRemoteRepositoryManager( remoteRepositoryManager );
         setSyncContextFactory( syncContextFactory );
         setOfflineController( offlineController );
-        setLoggerFactory( loggerFactory );
     }
 
     public void initService( ServiceLocator locator )
     {
-        setLoggerFactory( locator.getService( LoggerFactory.class ) );
         setRepositoryEventDispatcher( locator.getService( 
RepositoryEventDispatcher.class ) );
         setUpdateCheckManager( locator.getService( UpdateCheckManager.class ) 
);
         setRepositoryConnectorProvider( locator.getService( 
RepositoryConnectorProvider.class ) );
@@ -131,12 +124,6 @@ public void initService( ServiceLocator locator )
         setOfflineController( locator.getService( OfflineController.class ) );
     }
 
-    public DefaultMetadataResolver setLoggerFactory( LoggerFactory 
loggerFactory )
-    {
-        this.logger = NullLoggerFactory.getSafeLogger( loggerFactory, 
getClass() );
-        return this;
-    }
-
     public DefaultMetadataResolver setRepositoryEventDispatcher( 
RepositoryEventDispatcher repositoryEventDispatcher )
     {
         this.repositoryEventDispatcher = requireNonNull( 
repositoryEventDispatcher, "repository event dispatcher cannot be null" );
@@ -583,7 +570,7 @@ public void run()
                 download.setFile( metadataFile );
                 download.setChecksumPolicy( policy );
                 download.setRepositories( repositories );
-                download.setListener( SafeTransferListener.wrap( session, 
logger ) );
+                download.setListener( SafeTransferListener.wrap( session ) );
                 download.setTrace( trace );
 
                 RepositoryConnector connector =
diff --git 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultOfflineController.java
 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultOfflineController.java
index 938a9e19..9053d2bb 100644
--- 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultOfflineController.java
+++ 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultOfflineController.java
@@ -21,17 +21,11 @@
 
 import java.util.regex.Pattern;
 
-import javax.inject.Inject;
 import javax.inject.Named;
 
 import org.eclipse.aether.RepositorySystemSession;
 import org.eclipse.aether.impl.OfflineController;
 import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.spi.locator.Service;
-import org.eclipse.aether.spi.locator.ServiceLocator;
-import org.eclipse.aether.spi.log.Logger;
-import org.eclipse.aether.spi.log.LoggerFactory;
-import org.eclipse.aether.spi.log.NullLoggerFactory;
 import org.eclipse.aether.transfer.RepositoryOfflineException;
 import org.eclipse.aether.util.ConfigUtils;
 
@@ -40,7 +34,7 @@
  */
 @Named
 public class DefaultOfflineController
-    implements OfflineController, Service
+    implements OfflineController
 {
 
     static final String CONFIG_PROP_OFFLINE_PROTOCOLS = 
"aether.offline.protocols";
@@ -49,30 +43,11 @@
 
     private static final Pattern SEP = Pattern.compile( "\\s*,\\s*" );
 
-    private Logger logger = NullLoggerFactory.LOGGER;
-
     public DefaultOfflineController()
     {
         // enables default constructor
     }
 
-    @Inject
-    DefaultOfflineController( LoggerFactory loggerFactory )
-    {
-        setLoggerFactory( loggerFactory );
-    }
-
-    public void initService( ServiceLocator locator )
-    {
-        setLoggerFactory( locator.getService( LoggerFactory.class ) );
-    }
-
-    public DefaultOfflineController setLoggerFactory( LoggerFactory 
loggerFactory )
-    {
-        this.logger = NullLoggerFactory.getSafeLogger( loggerFactory, 
getClass() );
-        return this;
-    }
-
     public void checkOffline( RepositorySystemSession session, 
RemoteRepository repository )
         throws RepositoryOfflineException
     {
diff --git 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultRemoteRepositoryManager.java
 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultRemoteRepositoryManager.java
index 60713db8..2c179936 100644
--- 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultRemoteRepositoryManager.java
+++ 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultRemoteRepositoryManager.java
@@ -42,10 +42,9 @@
 import org.eclipse.aether.spi.connector.checksum.ChecksumPolicyProvider;
 import org.eclipse.aether.spi.locator.Service;
 import org.eclipse.aether.spi.locator.ServiceLocator;
-import org.eclipse.aether.spi.log.Logger;
-import org.eclipse.aether.spi.log.LoggerFactory;
-import org.eclipse.aether.spi.log.NullLoggerFactory;
 import org.eclipse.aether.util.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  */
@@ -87,7 +86,7 @@ public int hashCode()
 
     }
 
-    private Logger logger = NullLoggerFactory.LOGGER;
+    private static final Logger LOGGER = LoggerFactory.getLogger( 
DefaultRemoteRepositoryManager.class );
 
     private UpdatePolicyAnalyzer updatePolicyAnalyzer;
 
@@ -100,26 +99,18 @@ public DefaultRemoteRepositoryManager()
 
     @Inject
     DefaultRemoteRepositoryManager( UpdatePolicyAnalyzer updatePolicyAnalyzer,
-                                    ChecksumPolicyProvider 
checksumPolicyProvider, LoggerFactory loggerFactory )
+                                    ChecksumPolicyProvider 
checksumPolicyProvider )
     {
         setUpdatePolicyAnalyzer( updatePolicyAnalyzer );
         setChecksumPolicyProvider( checksumPolicyProvider );
-        setLoggerFactory( loggerFactory );
     }
 
     public void initService( ServiceLocator locator )
     {
-        setLoggerFactory( locator.getService( LoggerFactory.class ) );
         setUpdatePolicyAnalyzer( locator.getService( 
UpdatePolicyAnalyzer.class ) );
         setChecksumPolicyProvider( locator.getService( 
ChecksumPolicyProvider.class ) );
     }
 
-    public DefaultRemoteRepositoryManager setLoggerFactory( LoggerFactory 
loggerFactory )
-    {
-        this.logger = NullLoggerFactory.getSafeLogger( loggerFactory, 
getClass() );
-        return this;
-    }
-
     public DefaultRemoteRepositoryManager setUpdatePolicyAnalyzer( 
UpdatePolicyAnalyzer updatePolicyAnalyzer )
     {
         this.updatePolicyAnalyzer = requireNonNull( updatePolicyAnalyzer, 
"update policy analyzer cannot be null" );
@@ -217,7 +208,7 @@ public DefaultRemoteRepositoryManager 
setChecksumPolicyProvider( ChecksumPolicyP
 
     private void logMirror( RepositorySystemSession session, RemoteRepository 
original, RemoteRepository mirror )
     {
-        if ( !logger.isDebugEnabled() )
+        if ( !LOGGER.isDebugEnabled() )
         {
             return;
         }
@@ -231,8 +222,8 @@ private void logMirror( RepositorySystemSession session, 
RemoteRepository origin
             }
             cache.put( session, key, Boolean.TRUE );
         }
-        logger.debug( "Using mirror " + mirror.getId() + " (" + 
mirror.getUrl() + ") for " + original.getId() + " ("
-            + original.getUrl() + ")." );
+        LOGGER.debug( "Using mirror {} ({}) for {} ({}).",
+                mirror.getId(), mirror.getUrl(), original.getId(), 
original.getUrl() );
     }
 
     private String getKey( RemoteRepository repository )
diff --git 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultRepositoryConnectorProvider.java
 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultRepositoryConnectorProvider.java
index 68f3301c..3a828bc7 100644
--- 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultRepositoryConnectorProvider.java
+++ 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultRepositoryConnectorProvider.java
@@ -37,10 +37,9 @@
 import org.eclipse.aether.spi.connector.RepositoryConnectorFactory;
 import org.eclipse.aether.spi.locator.Service;
 import org.eclipse.aether.spi.locator.ServiceLocator;
-import org.eclipse.aether.spi.log.Logger;
-import org.eclipse.aether.spi.log.LoggerFactory;
-import org.eclipse.aether.spi.log.NullLoggerFactory;
 import org.eclipse.aether.transfer.NoRepositoryConnectorException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  */
@@ -49,7 +48,7 @@
     implements RepositoryConnectorProvider, Service
 {
 
-    private Logger logger = NullLoggerFactory.LOGGER;
+    private static final Logger LOGGER = LoggerFactory.getLogger( 
DefaultRepositoryConnectorProvider.class );
 
     private Collection<RepositoryConnectorFactory> connectorFactories = new 
ArrayList<RepositoryConnectorFactory>();
 
@@ -59,24 +58,16 @@ public DefaultRepositoryConnectorProvider()
     }
 
     @Inject
-    DefaultRepositoryConnectorProvider( Set<RepositoryConnectorFactory> 
connectorFactories, LoggerFactory loggerFactory )
+    DefaultRepositoryConnectorProvider( Set<RepositoryConnectorFactory> 
connectorFactories )
     {
         setRepositoryConnectorFactories( connectorFactories );
-        setLoggerFactory( loggerFactory );
     }
 
     public void initService( ServiceLocator locator )
     {
-        setLoggerFactory( locator.getService( LoggerFactory.class ) );
         connectorFactories = locator.getServices( 
RepositoryConnectorFactory.class );
     }
 
-    public DefaultRepositoryConnectorProvider setLoggerFactory( LoggerFactory 
loggerFactory )
-    {
-        this.logger = NullLoggerFactory.getSafeLogger( loggerFactory, 
getClass() );
-        return this;
-    }
-
     public DefaultRepositoryConnectorProvider addRepositoryConnectorFactory( 
RepositoryConnectorFactory factory )
     {
         connectorFactories.add( requireNonNull( factory, "repository connector 
factory cannot be null" ) );
@@ -115,7 +106,7 @@ public RepositoryConnector newRepositoryConnector( 
RepositorySystemSession sessi
             {
                 RepositoryConnector connector = 
factory.getComponent().newInstance( session, repository );
 
-                if ( logger.isDebugEnabled() )
+                if ( LOGGER.isDebugEnabled() )
                 {
                     StringBuilder buffer = new StringBuilder( 256 );
                     buffer.append( "Using connector " ).append( 
connector.getClass().getSimpleName() );
@@ -141,7 +132,7 @@ public RepositoryConnector newRepositoryConnector( 
RepositorySystemSession sessi
                         }
                     }
 
-                    logger.debug( buffer.toString() );
+                    LOGGER.debug( buffer.toString() );
                 }
 
                 return connector;
@@ -152,12 +143,12 @@ public RepositoryConnector newRepositoryConnector( 
RepositorySystemSession sessi
                 errors.add( e );
             }
         }
-        if ( logger.isDebugEnabled() && errors.size() > 1 )
+        if ( LOGGER.isDebugEnabled() && errors.size() > 1 )
         {
             String msg = "Could not obtain connector factory for " + 
repository;
             for ( Exception e : errors )
             {
-                logger.debug( msg, e );
+                LOGGER.debug( msg, e );
             }
         }
 
diff --git 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultRepositoryEventDispatcher.java
 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultRepositoryEventDispatcher.java
index 9970e622..4b71f436 100644
--- 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultRepositoryEventDispatcher.java
+++ 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultRepositoryEventDispatcher.java
@@ -32,9 +32,8 @@
 import org.eclipse.aether.impl.RepositoryEventDispatcher;
 import org.eclipse.aether.spi.locator.Service;
 import org.eclipse.aether.spi.locator.ServiceLocator;
-import org.eclipse.aether.spi.log.Logger;
-import org.eclipse.aether.spi.log.LoggerFactory;
-import org.eclipse.aether.spi.log.NullLoggerFactory;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  */
@@ -43,7 +42,7 @@
     implements RepositoryEventDispatcher, Service
 {
 
-    private Logger logger = NullLoggerFactory.LOGGER;
+    private static final Logger LOGGER = LoggerFactory.getLogger( 
DefaultRepositoryEventDispatcher.class );
 
     private Collection<RepositoryListener> listeners = new 
ArrayList<RepositoryListener>();
 
@@ -53,16 +52,9 @@ public DefaultRepositoryEventDispatcher()
     }
 
     @Inject
-    DefaultRepositoryEventDispatcher( Set<RepositoryListener> listeners, 
LoggerFactory loggerFactory )
+    DefaultRepositoryEventDispatcher( Set<RepositoryListener> listeners )
     {
         setRepositoryListeners( listeners );
-        setLoggerFactory( loggerFactory );
-    }
-
-    public DefaultRepositoryEventDispatcher setLoggerFactory( LoggerFactory 
loggerFactory )
-    {
-        this.logger = NullLoggerFactory.getSafeLogger( loggerFactory, 
getClass() );
-        return this;
     }
 
     public DefaultRepositoryEventDispatcher addRepositoryListener( 
RepositoryListener listener )
@@ -86,7 +78,6 @@ public DefaultRepositoryEventDispatcher 
setRepositoryListeners( Collection<Repos
 
     public void initService( ServiceLocator locator )
     {
-        setLoggerFactory( locator.getService( LoggerFactory.class ) );
         setRepositoryListeners( locator.getServices( RepositoryListener.class 
) );
     }
 
@@ -190,13 +181,13 @@ private void logError( Throwable e, Object listener )
         String msg =
             "Failed to dispatch repository event to " + 
listener.getClass().getCanonicalName() + ": " + e.getMessage();
 
-        if ( logger.isDebugEnabled() )
+        if ( LOGGER.isDebugEnabled() )
         {
-            logger.warn( msg, e );
+            LOGGER.warn( msg, e );
         }
         else
         {
-            logger.warn( msg );
+            LOGGER.warn( msg );
         }
     }
 
diff --git 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultRepositoryLayoutProvider.java
 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultRepositoryLayoutProvider.java
index 6f424e87..56bf1ec8 100644
--- 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultRepositoryLayoutProvider.java
+++ 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultRepositoryLayoutProvider.java
@@ -35,10 +35,9 @@
 import org.eclipse.aether.spi.connector.layout.RepositoryLayoutProvider;
 import org.eclipse.aether.spi.locator.Service;
 import org.eclipse.aether.spi.locator.ServiceLocator;
-import org.eclipse.aether.spi.log.Logger;
-import org.eclipse.aether.spi.log.LoggerFactory;
-import org.eclipse.aether.spi.log.NullLoggerFactory;
 import org.eclipse.aether.transfer.NoRepositoryLayoutException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  */
@@ -47,7 +46,7 @@
     implements RepositoryLayoutProvider, Service
 {
 
-    private Logger logger = NullLoggerFactory.LOGGER;
+    private static final Logger LOGGER = LoggerFactory.getLogger( 
DefaultRepositoryLayoutProvider.class );
 
     private Collection<RepositoryLayoutFactory> factories = new 
ArrayList<RepositoryLayoutFactory>();
 
@@ -57,24 +56,16 @@ public DefaultRepositoryLayoutProvider()
     }
 
     @Inject
-    DefaultRepositoryLayoutProvider( Set<RepositoryLayoutFactory> 
layoutFactories, LoggerFactory loggerFactory )
+    DefaultRepositoryLayoutProvider( Set<RepositoryLayoutFactory> 
layoutFactories )
     {
-        setLoggerFactory( loggerFactory );
         setRepositoryLayoutFactories( layoutFactories );
     }
 
     public void initService( ServiceLocator locator )
     {
-        setLoggerFactory( locator.getService( LoggerFactory.class ) );
         setRepositoryLayoutFactories( locator.getServices( 
RepositoryLayoutFactory.class ) );
     }
 
-    public DefaultRepositoryLayoutProvider setLoggerFactory( LoggerFactory 
loggerFactory )
-    {
-        this.logger = NullLoggerFactory.getSafeLogger( loggerFactory, 
getClass() );
-        return this;
-    }
-
     public DefaultRepositoryLayoutProvider addRepositoryLayoutFactory( 
RepositoryLayoutFactory factory )
     {
         factories.add( requireNonNull( factory, "layout factory cannot be 
null" ) );
@@ -120,12 +111,12 @@ public RepositoryLayout newRepositoryLayout( 
RepositorySystemSession session, Re
                 errors.add( e );
             }
         }
-        if ( logger.isDebugEnabled() && errors.size() > 1 )
+        if ( LOGGER.isDebugEnabled() && errors.size() > 1 )
         {
             String msg = "Could not obtain layout factory for " + repository;
             for ( Exception e : errors )
             {
-                logger.debug( msg, e );
+                LOGGER.debug( msg, e );
             }
         }
 
diff --git 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultRepositorySystem.java
 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultRepositorySystem.java
index 42694945..6dfd2868 100644
--- 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultRepositorySystem.java
+++ 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultRepositorySystem.java
@@ -79,9 +79,6 @@
 import org.eclipse.aether.resolution.VersionResult;
 import org.eclipse.aether.spi.locator.Service;
 import org.eclipse.aether.spi.locator.ServiceLocator;
-import org.eclipse.aether.spi.log.Logger;
-import org.eclipse.aether.spi.log.LoggerFactory;
-import org.eclipse.aether.spi.log.NullLoggerFactory;
 import org.eclipse.aether.util.graph.visitor.FilteringDependencyVisitor;
 import org.eclipse.aether.util.graph.visitor.TreeDependencyVisitor;
 
@@ -92,8 +89,6 @@
     implements RepositorySystem, Service
 {
 
-    private Logger logger = NullLoggerFactory.LOGGER;
-
     private VersionResolver versionResolver;
 
     private VersionRangeResolver versionRangeResolver;
@@ -127,7 +122,7 @@ public DefaultRepositorySystem()
                              ArtifactDescriptorReader artifactDescriptorReader,
                              DependencyCollector dependencyCollector, 
Installer installer, Deployer deployer,
                              LocalRepositoryProvider localRepositoryProvider, 
SyncContextFactory syncContextFactory,
-                             RemoteRepositoryManager remoteRepositoryManager, 
LoggerFactory loggerFactory )
+                             RemoteRepositoryManager remoteRepositoryManager )
     {
         setVersionResolver( versionResolver );
         setVersionRangeResolver( versionRangeResolver );
@@ -140,12 +135,10 @@ public DefaultRepositorySystem()
         setLocalRepositoryProvider( localRepositoryProvider );
         setSyncContextFactory( syncContextFactory );
         setRemoteRepositoryManager( remoteRepositoryManager );
-        setLoggerFactory( loggerFactory );
     }
 
     public void initService( ServiceLocator locator )
     {
-        setLoggerFactory( locator.getService( LoggerFactory.class ) );
         setVersionResolver( locator.getService( VersionResolver.class ) );
         setVersionRangeResolver( locator.getService( 
VersionRangeResolver.class ) );
         setArtifactResolver( locator.getService( ArtifactResolver.class ) );
@@ -159,12 +152,6 @@ public void initService( ServiceLocator locator )
         setSyncContextFactory( locator.getService( SyncContextFactory.class ) 
);
     }
 
-    public DefaultRepositorySystem setLoggerFactory( LoggerFactory 
loggerFactory )
-    {
-        this.logger = NullLoggerFactory.getSafeLogger( loggerFactory, 
getClass() );
-        return this;
-    }
-
     public DefaultRepositorySystem setVersionResolver( VersionResolver 
versionResolver )
     {
         this.versionResolver = requireNonNull( versionResolver, "version 
resolver cannot be null" );
diff --git 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultTransporterProvider.java
 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultTransporterProvider.java
index 7779a6f0..e7a1cb8c 100644
--- 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultTransporterProvider.java
+++ 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultTransporterProvider.java
@@ -35,10 +35,9 @@
 import org.eclipse.aether.spi.connector.transport.TransporterProvider;
 import org.eclipse.aether.spi.locator.Service;
 import org.eclipse.aether.spi.locator.ServiceLocator;
-import org.eclipse.aether.spi.log.Logger;
-import org.eclipse.aether.spi.log.LoggerFactory;
-import org.eclipse.aether.spi.log.NullLoggerFactory;
 import org.eclipse.aether.transfer.NoTransporterException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  */
@@ -47,7 +46,7 @@
     implements TransporterProvider, Service
 {
 
-    private Logger logger = NullLoggerFactory.LOGGER;
+    private static final Logger LOGGER = LoggerFactory.getLogger( 
DefaultTransporterProvider.class );
 
     private Collection<TransporterFactory> factories = new 
ArrayList<TransporterFactory>();
 
@@ -57,24 +56,16 @@ public DefaultTransporterProvider()
     }
 
     @Inject
-    DefaultTransporterProvider( Set<TransporterFactory> transporterFactories, 
LoggerFactory loggerFactory )
+    DefaultTransporterProvider( Set<TransporterFactory> transporterFactories )
     {
-        setLoggerFactory( loggerFactory );
         setTransporterFactories( transporterFactories );
     }
 
     public void initService( ServiceLocator locator )
     {
-        setLoggerFactory( locator.getService( LoggerFactory.class ) );
         setTransporterFactories( locator.getServices( TransporterFactory.class 
) );
     }
 
-    public DefaultTransporterProvider setLoggerFactory( LoggerFactory 
loggerFactory )
-    {
-        this.logger = NullLoggerFactory.getSafeLogger( loggerFactory, 
getClass() );
-        return this;
-    }
-
     public DefaultTransporterProvider addTransporterFactory( 
TransporterFactory factory )
     {
         factories.add( requireNonNull( factory, "transporter factory cannot be 
null" ) );
@@ -112,14 +103,14 @@ public Transporter newTransporter( 
RepositorySystemSession session, RemoteReposi
             {
                 Transporter transporter = factory.getComponent().newInstance( 
session, repository );
 
-                if ( logger.isDebugEnabled() )
+                if ( LOGGER.isDebugEnabled() )
                 {
                     StringBuilder buffer = new StringBuilder( 256 );
                     buffer.append( "Using transporter " ).append( 
transporter.getClass().getSimpleName() );
                     Utils.appendClassLoader( buffer, transporter );
                     buffer.append( " with priority " ).append( 
factory.getPriority() );
                     buffer.append( " for " ).append( repository.getUrl() );
-                    logger.debug( buffer.toString() );
+                    LOGGER.debug( buffer.toString() );
                 }
 
                 return transporter;
@@ -130,12 +121,12 @@ public Transporter newTransporter( 
RepositorySystemSession session, RemoteReposi
                 errors.add( e );
             }
         }
-        if ( logger.isDebugEnabled() && errors.size() > 1 )
+        if ( LOGGER.isDebugEnabled() && errors.size() > 1 )
         {
             String msg = "Could not obtain transporter factory for " + 
repository;
             for ( Exception e : errors )
             {
-                logger.debug( msg, e );
+                LOGGER.debug( msg, e );
             }
         }
 
diff --git 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultUpdateCheckManager.java
 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultUpdateCheckManager.java
index f7827a16..4c843be6 100644
--- 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultUpdateCheckManager.java
+++ 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultUpdateCheckManager.java
@@ -45,14 +45,13 @@
 import org.eclipse.aether.resolution.ResolutionErrorPolicy;
 import org.eclipse.aether.spi.locator.Service;
 import org.eclipse.aether.spi.locator.ServiceLocator;
-import org.eclipse.aether.spi.log.Logger;
-import org.eclipse.aether.spi.log.LoggerFactory;
-import org.eclipse.aether.spi.log.NullLoggerFactory;
 import org.eclipse.aether.transfer.ArtifactNotFoundException;
 import org.eclipse.aether.transfer.ArtifactTransferException;
 import org.eclipse.aether.transfer.MetadataNotFoundException;
 import org.eclipse.aether.transfer.MetadataTransferException;
 import org.eclipse.aether.util.ConfigUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  */
@@ -61,7 +60,7 @@
     implements UpdateCheckManager, Service
 {
 
-    private Logger logger = NullLoggerFactory.LOGGER;
+    private static final Logger LOGGER = LoggerFactory.getLogger( 
DefaultUpdatePolicyAnalyzer.class );
 
     private UpdatePolicyAnalyzer updatePolicyAnalyzer;
 
@@ -87,24 +86,16 @@ public DefaultUpdateCheckManager()
     }
 
     @Inject
-    DefaultUpdateCheckManager( UpdatePolicyAnalyzer updatePolicyAnalyzer, 
LoggerFactory loggerFactory )
+    DefaultUpdateCheckManager( UpdatePolicyAnalyzer updatePolicyAnalyzer )
     {
         setUpdatePolicyAnalyzer( updatePolicyAnalyzer );
-        setLoggerFactory( loggerFactory );
     }
 
     public void initService( ServiceLocator locator )
     {
-        setLoggerFactory( locator.getService( LoggerFactory.class ) );
         setUpdatePolicyAnalyzer( locator.getService( 
UpdatePolicyAnalyzer.class ) );
     }
 
-    public DefaultUpdateCheckManager setLoggerFactory( LoggerFactory 
loggerFactory )
-    {
-        this.logger = NullLoggerFactory.getSafeLogger( loggerFactory, 
getClass() );
-        return this;
-    }
-
     public DefaultUpdateCheckManager setUpdatePolicyAnalyzer( 
UpdatePolicyAnalyzer updatePolicyAnalyzer )
     {
         this.updatePolicyAnalyzer = requireNonNull( updatePolicyAnalyzer, 
"update policy analyzer cannot be null" );
@@ -116,11 +107,7 @@ public void checkArtifact( RepositorySystemSession 
session, UpdateCheck<Artifact
         if ( check.getLocalLastUpdated() != 0
             && !isUpdatedRequired( session, check.getLocalLastUpdated(), 
check.getPolicy() ) )
         {
-            if ( logger.isDebugEnabled() )
-            {
-                logger.debug( "Skipped remote request for " + check.getItem()
-                    + ", locally installed artifact up-to-date." );
-            }
+            LOGGER.debug( "Skipped remote request for {}, locally installed 
artifact up-to-date.", check.getItem() );
 
             check.setRequired( false );
             return;
@@ -173,9 +160,9 @@ else if ( error.length() <= 0 )
         }
         else if ( isAlreadyUpdated( session, updateKey ) )
         {
-            if ( logger.isDebugEnabled() )
+            if ( LOGGER.isDebugEnabled() )
             {
-                logger.debug( "Skipped remote request for " + check.getItem()
+                LOGGER.debug( "Skipped remote request for " + check.getItem()
                     + ", already updated during this session." );
             }
 
@@ -191,10 +178,7 @@ else if ( isUpdatedRequired( session, lastUpdated, 
check.getPolicy() ) )
         }
         else if ( fileExists )
         {
-            if ( logger.isDebugEnabled() )
-            {
-                logger.debug( "Skipped remote request for " + check.getItem() 
+ ", locally cached artifact up-to-date." );
-            }
+            LOGGER.debug( "Skipped remote request for {}, locally cached 
artifact up-to-date.", check.getItem() );
 
             check.setRequired( false );
         }
@@ -249,11 +233,7 @@ public void checkMetadata( RepositorySystemSession 
session, UpdateCheck<Metadata
         if ( check.getLocalLastUpdated() != 0
             && !isUpdatedRequired( session, check.getLocalLastUpdated(), 
check.getPolicy() ) )
         {
-            if ( logger.isDebugEnabled() )
-            {
-                logger.debug( "Skipped remote request for " + check.getItem()
-                    + ", locally installed metadata up-to-date." );
-            }
+            LOGGER.debug( "Skipped remote request for {} locally installed 
metadata up-to-date.", check.getItem() );
 
             check.setRequired( false );
             return;
@@ -306,11 +286,7 @@ else if ( error.length() <= 0 )
         }
         else if ( isAlreadyUpdated( session, updateKey ) )
         {
-            if ( logger.isDebugEnabled() )
-            {
-                logger.debug( "Skipped remote request for " + check.getItem()
-                    + ", already updated during this session." );
-            }
+            LOGGER.debug( "Skipped remote request for {}, already updated 
during this session.", check.getItem() );
 
             check.setRequired( false );
             if ( error != null )
@@ -324,10 +300,7 @@ else if ( isUpdatedRequired( session, lastUpdated, 
check.getPolicy() ) )
         }
         else if ( fileExists )
         {
-            if ( logger.isDebugEnabled() )
-            {
-                logger.debug( "Skipped remote request for " + check.getItem() 
+ ", locally cached metadata up-to-date." );
-            }
+            LOGGER.debug( "Skipped remote request for {}, locally cached 
metadata up-to-date.", check.getItem() );
 
             check.setRequired( false );
         }
@@ -374,7 +347,7 @@ private long getLastUpdated( Properties props, String key )
         }
         catch ( NumberFormatException e )
         {
-            logger.debug( "Cannot parse lastUpdated date: \'" + value + "\'. 
Ignoring.", e );
+            LOGGER.debug( "Cannot parse lastUpdated date: \'{}\'. Ignoring.", 
value, e );
             return 1;
         }
     }
@@ -386,7 +359,7 @@ private String getError( Properties props, String key )
 
     private File getTouchFile( Artifact artifact, File artifactFile )
     {
-        return new File( artifactFile.getPath() + ".lastUpdated" );
+        return new File( artifactFile.getPath() + UPDATED_KEY_SUFFIX );
     }
 
     private File getTouchFile( Metadata metadata, File metadataFile )
@@ -533,7 +506,7 @@ private boolean isUpdatedRequired( RepositorySystemSession 
session, long lastMod
 
     private Properties read( File touchFile )
     {
-        Properties props = new TrackingFileManager().setLogger( logger ).read( 
touchFile );
+        Properties props = new TrackingFileManager().read( touchFile );
         return ( props != null ) ? props : new Properties();
     }
 
@@ -612,7 +585,7 @@ else if ( error instanceof ArtifactNotFoundException || 
error instanceof Metadat
             updates.put( transferKey + UPDATED_KEY_SUFFIX, timestamp );
         }
 
-        return new TrackingFileManager().setLogger( logger ).update( 
touchFile, updates );
+        return new TrackingFileManager().update( touchFile, updates );
     }
 
 }
diff --git 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultUpdatePolicyAnalyzer.java
 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultUpdatePolicyAnalyzer.java
index c2cdd831..51981cc0 100644
--- 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultUpdatePolicyAnalyzer.java
+++ 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultUpdatePolicyAnalyzer.java
@@ -21,49 +21,28 @@
 
 import java.util.Calendar;
 
-import javax.inject.Inject;
 import javax.inject.Named;
 
 import org.eclipse.aether.RepositorySystemSession;
 import org.eclipse.aether.impl.UpdatePolicyAnalyzer;
 import org.eclipse.aether.repository.RepositoryPolicy;
-import org.eclipse.aether.spi.locator.Service;
-import org.eclipse.aether.spi.locator.ServiceLocator;
-import org.eclipse.aether.spi.log.Logger;
-import org.eclipse.aether.spi.log.LoggerFactory;
-import org.eclipse.aether.spi.log.NullLoggerFactory;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  */
 @Named
 public class DefaultUpdatePolicyAnalyzer
-    implements UpdatePolicyAnalyzer, Service
+    implements UpdatePolicyAnalyzer
 {
 
-    private Logger logger = NullLoggerFactory.LOGGER;
+    private static final Logger LOGGER = LoggerFactory.getLogger( 
DefaultUpdatePolicyAnalyzer.class );
 
     public DefaultUpdatePolicyAnalyzer()
     {
         // enables default constructor
     }
 
-    @Inject
-    DefaultUpdatePolicyAnalyzer( LoggerFactory loggerFactory )
-    {
-        setLoggerFactory( loggerFactory );
-    }
-
-    public void initService( ServiceLocator locator )
-    {
-        setLoggerFactory( locator.getService( LoggerFactory.class ) );
-    }
-
-    public DefaultUpdatePolicyAnalyzer setLoggerFactory( LoggerFactory 
loggerFactory )
-    {
-        this.logger = NullLoggerFactory.getSafeLogger( loggerFactory, 
getClass() );
-        return this;
-    }
-
     public String getEffectiveUpdatePolicy( RepositorySystemSession session, 
String policy1, String policy2 )
     {
         return ordinalOfUpdatePolicy( policy1 ) < ordinalOfUpdatePolicy( 
policy2 ) ? policy1 : policy2;
@@ -129,8 +108,8 @@ else if ( policy.startsWith( 
RepositoryPolicy.UPDATE_POLICY_INTERVAL ) )
 
             if ( !RepositoryPolicy.UPDATE_POLICY_NEVER.equals( policy ) )
             {
-                logger.warn( "Unknown repository update policy '" + policy + 
"', assuming '"
-                    + RepositoryPolicy.UPDATE_POLICY_NEVER + "'" );
+                LOGGER.warn( "Unknown repository update policy '{}', assuming 
'{}'",
+                        policy, RepositoryPolicy.UPDATE_POLICY_NEVER );
             }
         }
 
@@ -149,8 +128,8 @@ private int getMinutes( String policy )
         {
             minutes = 24 * 60;
 
-            logger.warn( "Non-parseable repository update policy '" + policy + 
"', assuming '"
-                + RepositoryPolicy.UPDATE_POLICY_INTERVAL + ":1440'" );
+            LOGGER.warn( "Non-parseable repository update policy '{}', 
assuming '{}:1440'",
+                    policy, RepositoryPolicy.UPDATE_POLICY_INTERVAL );
         }
         return minutes;
     }
diff --git 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/EnhancedLocalRepositoryManager.java
 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/EnhancedLocalRepositoryManager.java
index 093815d4..5ab8c40d 100644
--- 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/EnhancedLocalRepositoryManager.java
+++ 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/EnhancedLocalRepositoryManager.java
@@ -34,7 +34,6 @@
 import org.eclipse.aether.repository.LocalArtifactRequest;
 import org.eclipse.aether.repository.LocalArtifactResult;
 import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.spi.log.Logger;
 import org.eclipse.aether.util.ConfigUtils;
 
 /**
@@ -79,14 +78,6 @@
         trackingFileManager = new TrackingFileManager();
     }
 
-    @Override
-    public EnhancedLocalRepositoryManager setLogger( Logger logger )
-    {
-        super.setLogger( logger );
-        trackingFileManager.setLogger( logger );
-        return this;
-    }
-
     @Override
     public LocalArtifactResult find( RepositorySystemSession session, 
LocalArtifactRequest request )
     {
diff --git 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/EnhancedLocalRepositoryManagerFactory.java
 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/EnhancedLocalRepositoryManagerFactory.java
index 904c8403..fdf6b388 100644
--- 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/EnhancedLocalRepositoryManagerFactory.java
+++ 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/EnhancedLocalRepositoryManagerFactory.java
@@ -19,7 +19,6 @@
  * under the License.
  */
 
-import javax.inject.Inject;
 import javax.inject.Named;
 
 import org.eclipse.aether.RepositorySystemSession;
@@ -27,11 +26,6 @@
 import org.eclipse.aether.repository.LocalRepositoryManager;
 import org.eclipse.aether.repository.NoLocalRepositoryManagerException;
 import org.eclipse.aether.spi.localrepo.LocalRepositoryManagerFactory;
-import org.eclipse.aether.spi.locator.Service;
-import org.eclipse.aether.spi.locator.ServiceLocator;
-import org.eclipse.aether.spi.log.Logger;
-import org.eclipse.aether.spi.log.LoggerFactory;
-import org.eclipse.aether.spi.log.NullLoggerFactory;
 
 /**
  * Creates enhanced local repository managers for repository types {@code 
"default"} or {@code "" (automatic)}. Enhanced
@@ -42,11 +36,8 @@
  */
 @Named( "enhanced" )
 public class EnhancedLocalRepositoryManagerFactory
-    implements LocalRepositoryManagerFactory, Service
+    implements LocalRepositoryManagerFactory
 {
-
-    private Logger logger = NullLoggerFactory.LOGGER;
-
     private float priority = 10.0f;
 
     public EnhancedLocalRepositoryManagerFactory()
@@ -54,18 +45,12 @@ public EnhancedLocalRepositoryManagerFactory()
         // enable no-arg constructor
     }
 
-    @Inject
-    EnhancedLocalRepositoryManagerFactory( LoggerFactory loggerFactory )
-    {
-        setLoggerFactory( loggerFactory );
-    }
-
     public LocalRepositoryManager newInstance( RepositorySystemSession 
session, LocalRepository repository )
         throws NoLocalRepositoryManagerException
     {
         if ( "".equals( repository.getContentType() ) || "default".equals( 
repository.getContentType() ) )
         {
-            return new EnhancedLocalRepositoryManager( 
repository.getBasedir(), session ).setLogger( logger );
+            return new EnhancedLocalRepositoryManager( 
repository.getBasedir(), session );
         }
         else
         {
@@ -73,17 +58,6 @@ public LocalRepositoryManager newInstance( 
RepositorySystemSession session, Loca
         }
     }
 
-    public void initService( ServiceLocator locator )
-    {
-        setLoggerFactory( locator.getService( LoggerFactory.class ) );
-    }
-
-    public EnhancedLocalRepositoryManagerFactory setLoggerFactory( 
LoggerFactory loggerFactory )
-    {
-        this.logger = NullLoggerFactory.getSafeLogger( loggerFactory, 
EnhancedLocalRepositoryManager.class );
-        return this;
-    }
-
     public float getPriority()
     {
         return priority;
diff --git 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/FailChecksumPolicy.java
 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/FailChecksumPolicy.java
index 12937759..c19c0060 100644
--- 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/FailChecksumPolicy.java
+++ 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/FailChecksumPolicy.java
@@ -19,7 +19,6 @@
  * under the License.
  */
 
-import org.eclipse.aether.spi.log.LoggerFactory;
 import org.eclipse.aether.transfer.ChecksumFailureException;
 import org.eclipse.aether.transfer.TransferResource;
 
@@ -30,9 +29,9 @@
     extends AbstractChecksumPolicy
 {
 
-    FailChecksumPolicy( LoggerFactory loggerFactory, TransferResource resource 
)
+    FailChecksumPolicy( TransferResource resource )
     {
-        super( loggerFactory, resource );
+        super( resource );
     }
 
     public boolean onTransferChecksumFailure( ChecksumFailureException error )
diff --git 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/LoggerFactoryProvider.java
 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/LoggerFactoryProvider.java
index 3d46490a..4a532e26 100644
--- 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/LoggerFactoryProvider.java
+++ 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/LoggerFactoryProvider.java
@@ -25,7 +25,6 @@
 import javax.inject.Singleton;
 
 import org.eclipse.aether.spi.log.LoggerFactory;
-import org.eclipse.aether.spi.log.NullLoggerFactory;
 
 /**
  * Helps Sisu-based applications to pick the right logger factory depending on 
the classpath.
@@ -42,23 +41,7 @@
 
     public LoggerFactory get()
     {
-        try
-        {
-            LoggerFactory factory = slf4j.get();
-            if ( factory != null )
-            {
-                return factory;
-            }
-        }
-        catch ( LinkageError e )
-        {
-            // fall through
-        }
-        catch ( RuntimeException e )
-        {
-            // fall through
-        }
-        return NullLoggerFactory.INSTANCE;
+            return slf4j.get();
     }
 
 }
diff --git 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/SafeTransferListener.java
 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/SafeTransferListener.java
index 1ba8a37f..147a6a6a 100644
--- 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/SafeTransferListener.java
+++ 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/SafeTransferListener.java
@@ -20,45 +20,44 @@
  */
 
 import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.spi.log.Logger;
 import org.eclipse.aether.transfer.AbstractTransferListener;
 import org.eclipse.aether.transfer.TransferCancelledException;
 import org.eclipse.aether.transfer.TransferEvent;
 import org.eclipse.aether.transfer.TransferListener;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 class SafeTransferListener
     extends AbstractTransferListener
 {
 
-    private final Logger logger;
+    private static final Logger LOGGER = LoggerFactory.getLogger( 
SafeTransferListener.class );
 
     private final TransferListener listener;
 
-    public static TransferListener wrap( RepositorySystemSession session, 
Logger logger )
+    public static TransferListener wrap( RepositorySystemSession session )
     {
         TransferListener listener = session.getTransferListener();
         if ( listener == null )
         {
             return null;
         }
-        return new SafeTransferListener( listener, logger );
+        return new SafeTransferListener( listener );
     }
 
-    protected SafeTransferListener( RepositorySystemSession session, Logger 
logger )
+    protected SafeTransferListener( RepositorySystemSession session )
     {
-        this( session.getTransferListener(), logger );
+        this( session.getTransferListener() );
     }
 
-    private SafeTransferListener( TransferListener listener, Logger logger )
+    private SafeTransferListener( TransferListener listener )
     {
         this.listener = listener;
-        this.logger = logger;
     }
 
     private void logError( TransferEvent event, Throwable e )
     {
-        String msg = "Failed to dispatch transfer event '" + event + "' to " + 
listener.getClass().getCanonicalName();
-        logger.debug( msg, e );
+        LOGGER.debug( "Failed to dispatch transfer event '{}' to {}", event,  
listener.getClass().getCanonicalName(), e );
     }
 
     @Override
@@ -71,11 +70,7 @@ public void transferInitiated( TransferEvent event )
             {
                 listener.transferInitiated( event );
             }
-            catch ( RuntimeException e )
-            {
-                logError( event, e );
-            }
-            catch ( LinkageError e )
+            catch ( RuntimeException | LinkageError e )
             {
                 logError( event, e );
             }
@@ -92,11 +87,7 @@ public void transferStarted( TransferEvent event )
             {
                 listener.transferStarted( event );
             }
-            catch ( RuntimeException e )
-            {
-                logError( event, e );
-            }
-            catch ( LinkageError e )
+            catch ( RuntimeException | LinkageError e )
             {
                 logError( event, e );
             }
@@ -113,11 +104,7 @@ public void transferProgressed( TransferEvent event )
             {
                 listener.transferProgressed( event );
             }
-            catch ( RuntimeException e )
-            {
-                logError( event, e );
-            }
-            catch ( LinkageError e )
+            catch ( RuntimeException | LinkageError e )
             {
                 logError( event, e );
             }
@@ -134,11 +121,7 @@ public void transferCorrupted( TransferEvent event )
             {
                 listener.transferCorrupted( event );
             }
-            catch ( RuntimeException e )
-            {
-                logError( event, e );
-            }
-            catch ( LinkageError e )
+            catch ( RuntimeException | LinkageError e )
             {
                 logError( event, e );
             }
@@ -154,11 +137,7 @@ public void transferSucceeded( TransferEvent event )
             {
                 listener.transferSucceeded( event );
             }
-            catch ( RuntimeException e )
-            {
-                logError( event, e );
-            }
-            catch ( LinkageError e )
+            catch ( RuntimeException | LinkageError e )
             {
                 logError( event, e );
             }
@@ -174,11 +153,7 @@ public void transferFailed( TransferEvent event )
             {
                 listener.transferFailed( event );
             }
-            catch ( RuntimeException e )
-            {
-                logError( event, e );
-            }
-            catch ( LinkageError e )
+            catch ( RuntimeException | LinkageError e )
             {
                 logError( event, e );
             }
diff --git 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/SimpleLocalRepositoryManager.java
 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/SimpleLocalRepositoryManager.java
index d06e4259..a00cdaaa 100644
--- 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/SimpleLocalRepositoryManager.java
+++ 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/SimpleLocalRepositoryManager.java
@@ -36,7 +36,6 @@
 import org.eclipse.aether.repository.LocalRepository;
 import org.eclipse.aether.repository.LocalRepositoryManager;
 import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.spi.log.Logger;
 
 /**
  * A local repository manager that realizes the classical Maven 2.0 local 
repository.
@@ -63,11 +62,6 @@
         repository = new LocalRepository( basedir.getAbsoluteFile(), type );
     }
 
-    public SimpleLocalRepositoryManager setLogger( Logger logger )
-    {
-        return this;
-    }
-
     public LocalRepository getRepository()
     {
         return repository;
diff --git 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/SimpleLocalRepositoryManagerFactory.java
 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/SimpleLocalRepositoryManagerFactory.java
index 3c2cf6dd..c0426e84 100644
--- 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/SimpleLocalRepositoryManagerFactory.java
+++ 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/SimpleLocalRepositoryManagerFactory.java
@@ -19,7 +19,6 @@
  * under the License.
  */
 
-import javax.inject.Inject;
 import javax.inject.Named;
 
 import org.eclipse.aether.RepositorySystemSession;
@@ -27,22 +26,14 @@
 import org.eclipse.aether.repository.LocalRepositoryManager;
 import org.eclipse.aether.repository.NoLocalRepositoryManagerException;
 import org.eclipse.aether.spi.localrepo.LocalRepositoryManagerFactory;
-import org.eclipse.aether.spi.locator.Service;
-import org.eclipse.aether.spi.locator.ServiceLocator;
-import org.eclipse.aether.spi.log.Logger;
-import org.eclipse.aether.spi.log.LoggerFactory;
-import org.eclipse.aether.spi.log.NullLoggerFactory;
 
 /**
  * Creates local repository managers for repository type {@code "simple"}.
  */
 @Named( "simple" )
 public class SimpleLocalRepositoryManagerFactory
-    implements LocalRepositoryManagerFactory, Service
+    implements LocalRepositoryManagerFactory
 {
-
-    private Logger logger = NullLoggerFactory.LOGGER;
-
     private float priority;
 
     public SimpleLocalRepositoryManagerFactory()
@@ -50,18 +41,12 @@ public SimpleLocalRepositoryManagerFactory()
         // enable no-arg constructor
     }
 
-    @Inject
-    SimpleLocalRepositoryManagerFactory( LoggerFactory loggerFactory )
-    {
-        setLoggerFactory( loggerFactory );
-    }
-
     public LocalRepositoryManager newInstance( RepositorySystemSession 
session, LocalRepository repository )
         throws NoLocalRepositoryManagerException
     {
         if ( "".equals( repository.getContentType() ) || "simple".equals( 
repository.getContentType() ) )
         {
-            return new SimpleLocalRepositoryManager( repository.getBasedir() 
).setLogger( logger );
+            return new SimpleLocalRepositoryManager( repository.getBasedir() );
         }
         else
         {
@@ -69,17 +54,6 @@ public LocalRepositoryManager newInstance( 
RepositorySystemSession session, Loca
         }
     }
 
-    public void initService( ServiceLocator locator )
-    {
-        setLoggerFactory( locator.getService( LoggerFactory.class ) );
-    }
-
-    public SimpleLocalRepositoryManagerFactory setLoggerFactory( LoggerFactory 
loggerFactory )
-    {
-        this.logger = NullLoggerFactory.getSafeLogger( loggerFactory, 
SimpleLocalRepositoryManager.class );
-        return this;
-    }
-
     public float getPriority()
     {
         return priority;
diff --git 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/TrackingFileManager.java
 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/TrackingFileManager.java
index 0e4a18e3..4e8a21f9 100644
--- 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/TrackingFileManager.java
+++ 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/TrackingFileManager.java
@@ -19,6 +19,9 @@
  * under the License.
  */
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.Closeable;
@@ -32,22 +35,13 @@
 import java.util.Map;
 import java.util.Properties;
 
-import org.eclipse.aether.spi.log.Logger;
-import org.eclipse.aether.spi.log.NullLoggerFactory;
-
 /**
  * Manages potentially concurrent accesses to a properties file.
  */
 class TrackingFileManager
 {
 
-    private Logger logger = NullLoggerFactory.LOGGER;
-
-    public TrackingFileManager setLogger( Logger logger )
-    {
-        this.logger = ( logger != null ) ? logger : NullLoggerFactory.LOGGER;
-        return this;
-    }
+    private static final Logger LOGGER = LoggerFactory.getLogger( 
TrackingFileManager.class );
 
     public Properties read( File file )
     {
@@ -73,7 +67,7 @@ public Properties read( File file )
             }
             catch ( IOException e )
             {
-                logger.warn( "Failed to read tracking file " + file, e );
+                LOGGER.warn( "Failed to read tracking file {}", file, e );
             }
             finally
             {
@@ -94,7 +88,7 @@ public Properties update( File file, Map<String, String> 
updates )
             File directory = file.getParentFile();
             if ( !directory.mkdirs() && !directory.exists() )
             {
-                logger.warn( "Failed to create parent directories for tracking 
file " + file );
+                LOGGER.warn( "Failed to create parent directories for tracking 
file {}", file );
                 return props;
             }
 
@@ -130,7 +124,7 @@ public Properties update( File file, Map<String, String> 
updates )
 
                 ByteArrayOutputStream stream = new ByteArrayOutputStream( 1024 
* 2 );
 
-                logger.debug( "Writing tracking file " + file );
+                LOGGER.debug( "Writing tracking file {}", file );
                 props.store( stream, "NOTE: This is a Maven Resolver internal 
implementation file"
                     + ", its format can be changed without prior notice." );
 
@@ -140,7 +134,7 @@ public Properties update( File file, Map<String, String> 
updates )
             }
             catch ( IOException e )
             {
-                logger.warn( "Failed to write tracking file " + file, e );
+                LOGGER.warn( "Failed to write tracking file {}", file, e );
             }
             finally
             {
@@ -162,7 +156,7 @@ private void release( FileLock lock, File file )
             }
             catch ( IOException e )
             {
-                logger.warn( "Error releasing lock for tracking file " + file, 
e );
+                LOGGER.warn( "Error releasing lock for tracking file {}", 
file, e );
             }
         }
     }
@@ -177,7 +171,7 @@ private void close( Closeable closeable, File file )
             }
             catch ( IOException e )
             {
-                logger.warn( "Error closing tracking file " + file, e );
+                LOGGER.warn( "Error closing tracking file {}", file, e );
             }
         }
     }
@@ -195,7 +189,7 @@ private Object getLock( File file )
         }
         catch ( IOException e )
         {
-            logger.warn( "Failed to canonicalize path " + file + ": " + 
e.getMessage() );
+            LOGGER.warn( "Failed to canonicalize path {}: {}", file, 
e.getMessage() );
             return file.getAbsolutePath().intern();
         }
     }
diff --git 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/WarnChecksumPolicy.java
 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/WarnChecksumPolicy.java
index 4132a861..32efcf06 100644
--- 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/WarnChecksumPolicy.java
+++ 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/WarnChecksumPolicy.java
@@ -19,7 +19,6 @@
  * under the License.
  */
 
-import org.eclipse.aether.spi.log.LoggerFactory;
 import org.eclipse.aether.transfer.ChecksumFailureException;
 import org.eclipse.aether.transfer.TransferResource;
 
@@ -30,9 +29,9 @@
     extends AbstractChecksumPolicy
 {
 
-    WarnChecksumPolicy( LoggerFactory loggerFactory, TransferResource resource 
)
+    WarnChecksumPolicy( TransferResource resource )
     {
-        super( loggerFactory, resource );
+        super( resource );
     }
 
     public boolean onTransferChecksumFailure( ChecksumFailureException 
exception )
diff --git 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/collect/DefaultDependencyCollector.java
 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/collect/DefaultDependencyCollector.java
index f96d923a..d2ca7d43 100644
--- 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/collect/DefaultDependencyCollector.java
+++ 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/collect/DefaultDependencyCollector.java
@@ -65,13 +65,12 @@
 import org.eclipse.aether.resolution.VersionRangeResult;
 import org.eclipse.aether.spi.locator.Service;
 import org.eclipse.aether.spi.locator.ServiceLocator;
-import org.eclipse.aether.spi.log.Logger;
-import org.eclipse.aether.spi.log.LoggerFactory;
-import org.eclipse.aether.spi.log.NullLoggerFactory;
 import org.eclipse.aether.util.ConfigUtils;
 import org.eclipse.aether.util.graph.manager.DependencyManagerUtils;
 import org.eclipse.aether.util.graph.transformer.TransformationContextKeys;
 import org.eclipse.aether.version.Version;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  */
@@ -84,7 +83,7 @@
 
     private static final String CONFIG_PROP_MAX_CYCLES = 
"aether.dependencyCollector.maxCycles";
 
-    private Logger logger = NullLoggerFactory.LOGGER;
+    private static final Logger LOGGER = LoggerFactory.getLogger( 
DefaultDependencyCollector.class );
 
     private RemoteRepositoryManager remoteRepositoryManager;
 
@@ -100,28 +99,20 @@ public DefaultDependencyCollector()
     @Inject
     DefaultDependencyCollector( RemoteRepositoryManager 
remoteRepositoryManager,
                                 ArtifactDescriptorReader 
artifactDescriptorReader,
-                                VersionRangeResolver versionRangeResolver, 
LoggerFactory loggerFactory )
+                                VersionRangeResolver versionRangeResolver )
     {
         setRemoteRepositoryManager( remoteRepositoryManager );
         setArtifactDescriptorReader( artifactDescriptorReader );
         setVersionRangeResolver( versionRangeResolver );
-        setLoggerFactory( loggerFactory );
     }
 
     public void initService( ServiceLocator locator )
     {
-        setLoggerFactory( locator.getService( LoggerFactory.class ) );
         setRemoteRepositoryManager( locator.getService( 
RemoteRepositoryManager.class ) );
         setArtifactDescriptorReader( locator.getService( 
ArtifactDescriptorReader.class ) );
         setVersionRangeResolver( locator.getService( 
VersionRangeResolver.class ) );
     }
 
-    public DefaultDependencyCollector setLoggerFactory( LoggerFactory 
loggerFactory )
-    {
-        this.logger = NullLoggerFactory.getSafeLogger( loggerFactory, 
getClass() );
-        return this;
-    }
-
     public DefaultDependencyCollector setRemoteRepositoryManager( 
RemoteRepositoryManager remoteRepositoryManager )
     {
         this.remoteRepositoryManager = requireNonNull( 
remoteRepositoryManager, "remote repository provider cannot be null" );
@@ -159,7 +150,7 @@ public CollectResult collectDependencies( 
RepositorySystemSession session, Colle
         List<Dependency> dependencies = request.getDependencies();
         List<Dependency> managedDependencies = 
request.getManagedDependencies();
 
-        Map<String, Object> stats = logger.isDebugEnabled() ? new 
LinkedHashMap<String, Object>() : null;
+        Map<String, Object> stats = LOGGER.isDebugEnabled() ? new 
LinkedHashMap<String, Object>() : null;
         long time1 = System.nanoTime();
 
         DefaultDependencyNode node;
@@ -285,7 +276,7 @@ public CollectResult collectDependencies( 
RepositorySystemSession session, Colle
             long time3 = System.nanoTime();
             stats.put( "DefaultDependencyCollector.collectTime", time2 - time1 
);
             stats.put( "DefaultDependencyCollector.transformTime", time3 - 
time2 );
-            logger.debug( "Dependency collection stats: " + stats );
+            LOGGER.debug( "Dependency collection stats: " + stats );
         }
 
         if ( errorPath != null )
diff --git 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/slf4j/package-info.java
 
b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/slf4j/package-info.java
deleted file mode 100644
index 307c22e5..00000000
--- 
a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/slf4j/package-info.java
+++ /dev/null
@@ -1,24 +0,0 @@
-// CHECKSTYLE_OFF: RegexpHeader
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-/**
- * The integration with the logging framework <a href="http://www.slf4j.org/"; 
target="_blank">SLF4J</a>. 
- */
-package org.eclipse.aether.internal.impl.slf4j;
-
diff --git 
a/maven-resolver-impl/src/test/java/org/eclipse/aether/impl/DefaultServiceLocatorTest.java
 
b/maven-resolver-impl/src/test/java/org/eclipse/aether/impl/DefaultServiceLocatorTest.java
index 657b4ac5..72317d79 100644
--- 
a/maven-resolver-impl/src/test/java/org/eclipse/aether/impl/DefaultServiceLocatorTest.java
+++ 
b/maven-resolver-impl/src/test/java/org/eclipse/aether/impl/DefaultServiceLocatorTest.java
@@ -25,10 +25,6 @@
 import java.util.List;
 
 import org.eclipse.aether.RepositorySystem;
-import org.eclipse.aether.impl.ArtifactDescriptorReader;
-import org.eclipse.aether.impl.DefaultServiceLocator;
-import org.eclipse.aether.impl.VersionRangeResolver;
-import org.eclipse.aether.impl.VersionResolver;
 import org.eclipse.aether.spi.locator.Service;
 import org.eclipse.aether.spi.locator.ServiceLocator;
 import org.junit.Test;
diff --git 
a/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultRemoteRepositoryManagerTest.java
 
b/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultRemoteRepositoryManagerTest.java
index 8bc50d6a..f00c480d 100644
--- 
a/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultRemoteRepositoryManagerTest.java
+++ 
b/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultRemoteRepositoryManagerTest.java
@@ -28,8 +28,6 @@
 import org.eclipse.aether.DefaultRepositorySystemSession;
 import org.eclipse.aether.RepositorySystemSession;
 import org.eclipse.aether.impl.UpdatePolicyAnalyzer;
-import org.eclipse.aether.internal.impl.DefaultRemoteRepositoryManager;
-import org.eclipse.aether.internal.test.util.TestLoggerFactory;
 import org.eclipse.aether.internal.test.util.TestUtils;
 import org.eclipse.aether.repository.MirrorSelector;
 import org.eclipse.aether.repository.Proxy;
@@ -61,7 +59,6 @@ public void setup()
         manager = new DefaultRemoteRepositoryManager();
         manager.setUpdatePolicyAnalyzer( new StubUpdatePolicyAnalyzer() );
         manager.setChecksumPolicyProvider( new DefaultChecksumPolicyProvider() 
);
-        manager.setLoggerFactory( new TestLoggerFactory() );
     }
 
     @After
diff --git 
a/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/FailChecksumPolicyTest.java
 
b/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/FailChecksumPolicyTest.java
index 296f8296..9eceb406 100644
--- 
a/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/FailChecksumPolicyTest.java
+++ 
b/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/FailChecksumPolicyTest.java
@@ -37,7 +37,7 @@
     @Before
     public void setup()
     {
-        policy = new FailChecksumPolicy( null, new TransferResource( "null", 
"file:/dev/null", "file.txt", null, null ) );
+        policy = new FailChecksumPolicy( new TransferResource( "null", 
"file:/dev/null", "file.txt", null, null ) );
         exception = new ChecksumFailureException( "test" );
     }
 
diff --git 
a/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/WarnChecksumPolicyTest.java
 
b/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/WarnChecksumPolicyTest.java
index 7f64e062..0f7b522c 100644
--- 
a/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/WarnChecksumPolicyTest.java
+++ 
b/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/WarnChecksumPolicyTest.java
@@ -37,7 +37,7 @@
     @Before
     public void setup()
     {
-        policy = new WarnChecksumPolicy( null, new TransferResource( "null", 
"file:/dev/null", "file.txt", null, null ) );
+        policy = new WarnChecksumPolicy( new TransferResource( "null", 
"file:/dev/null", "file.txt", null, null ) );
         exception = new ChecksumFailureException( "test" );
     }
 
diff --git 
a/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/collect/DefaultDependencyCollectorTest.java
 
b/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/collect/DefaultDependencyCollectorTest.java
index dc89d9b7..0e2d6443 100644
--- 
a/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/collect/DefaultDependencyCollectorTest.java
+++ 
b/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/collect/DefaultDependencyCollectorTest.java
@@ -52,7 +52,6 @@
 import org.eclipse.aether.internal.impl.StubRemoteRepositoryManager;
 import org.eclipse.aether.internal.impl.StubVersionRangeResolver;
 import org.eclipse.aether.internal.test.util.DependencyGraphParser;
-import org.eclipse.aether.internal.test.util.TestLoggerFactory;
 import org.eclipse.aether.internal.test.util.TestUtils;
 import org.eclipse.aether.repository.RemoteRepository;
 import org.eclipse.aether.resolution.ArtifactDescriptorException;
@@ -103,7 +102,6 @@ public void setup()
         collector.setArtifactDescriptorReader( newReader( "" ) );
         collector.setVersionRangeResolver( new StubVersionRangeResolver() );
         collector.setRemoteRepositoryManager( new 
StubRemoteRepositoryManager() );
-        collector.setLoggerFactory( new TestLoggerFactory() );
 
         parser = new DependencyGraphParser( "artifact-descriptions/" );
 
diff --git 
a/maven-resolver-transport-classpath/src/main/java/org/eclipse/aether/transport/classpath/ClasspathTransporter.java
 
b/maven-resolver-transport-classpath/src/main/java/org/eclipse/aether/transport/classpath/ClasspathTransporter.java
index b9876da4..968c231a 100644
--- 
a/maven-resolver-transport-classpath/src/main/java/org/eclipse/aether/transport/classpath/ClasspathTransporter.java
+++ 
b/maven-resolver-transport-classpath/src/main/java/org/eclipse/aether/transport/classpath/ClasspathTransporter.java
@@ -31,7 +31,6 @@
 import org.eclipse.aether.spi.connector.transport.PeekTask;
 import org.eclipse.aether.spi.connector.transport.PutTask;
 import org.eclipse.aether.spi.connector.transport.TransportTask;
-import org.eclipse.aether.spi.log.Logger;
 import org.eclipse.aether.transfer.NoTransporterException;
 import org.eclipse.aether.util.ConfigUtils;
 
@@ -46,7 +45,7 @@
 
     private final ClassLoader classLoader;
 
-    ClasspathTransporter( RepositorySystemSession session, RemoteRepository 
repository, Logger logger )
+    ClasspathTransporter( RepositorySystemSession session, RemoteRepository 
repository )
         throws NoTransporterException
     {
         if ( !"classpath".equalsIgnoreCase( repository.getProtocol() ) )
diff --git 
a/maven-resolver-transport-classpath/src/main/java/org/eclipse/aether/transport/classpath/ClasspathTransporterFactory.java
 
b/maven-resolver-transport-classpath/src/main/java/org/eclipse/aether/transport/classpath/ClasspathTransporterFactory.java
index 18db417d..a1004be5 100644
--- 
a/maven-resolver-transport-classpath/src/main/java/org/eclipse/aether/transport/classpath/ClasspathTransporterFactory.java
+++ 
b/maven-resolver-transport-classpath/src/main/java/org/eclipse/aether/transport/classpath/ClasspathTransporterFactory.java
@@ -19,18 +19,12 @@
  * under the License.
  */
 
-import javax.inject.Inject;
 import javax.inject.Named;
 
 import org.eclipse.aether.RepositorySystemSession;
 import org.eclipse.aether.repository.RemoteRepository;
 import org.eclipse.aether.spi.connector.transport.Transporter;
 import org.eclipse.aether.spi.connector.transport.TransporterFactory;
-import org.eclipse.aether.spi.locator.Service;
-import org.eclipse.aether.spi.locator.ServiceLocator;
-import org.eclipse.aether.spi.log.Logger;
-import org.eclipse.aether.spi.log.LoggerFactory;
-import org.eclipse.aether.spi.log.NullLoggerFactory;
 import org.eclipse.aether.transfer.NoTransporterException;
 
 /**
@@ -43,7 +37,7 @@
  */
 @Named( "classpath" )
 public final class ClasspathTransporterFactory
-    implements TransporterFactory, Service
+    implements TransporterFactory
 {
 
     /**
@@ -53,8 +47,6 @@
      */
     public static final String CONFIG_PROP_CLASS_LOADER = 
"aether.connector.classpath.loader";
 
-    private Logger logger = NullLoggerFactory.LOGGER;
-
     private float priority;
 
     /**
@@ -67,28 +59,6 @@ public ClasspathTransporterFactory()
         // enables default constructor
     }
 
-    @Inject
-    ClasspathTransporterFactory( LoggerFactory loggerFactory )
-    {
-        setLoggerFactory( loggerFactory );
-    }
-
-    public void initService( ServiceLocator locator )
-    {
-        setLoggerFactory( locator.getService( LoggerFactory.class ) );
-    }
-
-    /**
-     * Sets the logger factory to use for this component.
-     * 
-     * @param loggerFactory The logger factory to use, may be {@code null} to 
disable logging.
-     * @return This component for chaining, never {@code null}.
-     */
-    public ClasspathTransporterFactory setLoggerFactory( LoggerFactory 
loggerFactory )
-    {
-        this.logger = NullLoggerFactory.getSafeLogger( loggerFactory, 
ClasspathTransporter.class );
-        return this;
-    }
 
     public float getPriority()
     {
@@ -110,7 +80,7 @@ public ClasspathTransporterFactory setPriority( float 
priority )
     public Transporter newInstance( RepositorySystemSession session, 
RemoteRepository repository )
         throws NoTransporterException
     {
-        return new ClasspathTransporter( session, repository, logger );
+        return new ClasspathTransporter( session, repository );
     }
 
 }
diff --git 
a/maven-resolver-transport-classpath/src/test/java/org/eclipse/aether/transport/classpath/ClasspathTransporterTest.java
 
b/maven-resolver-transport-classpath/src/test/java/org/eclipse/aether/transport/classpath/ClasspathTransporterTest.java
index 0f7647c2..6d7fa32c 100644
--- 
a/maven-resolver-transport-classpath/src/test/java/org/eclipse/aether/transport/classpath/ClasspathTransporterTest.java
+++ 
b/maven-resolver-transport-classpath/src/test/java/org/eclipse/aether/transport/classpath/ClasspathTransporterTest.java
@@ -28,7 +28,6 @@
 
 import org.eclipse.aether.DefaultRepositorySystemSession;
 import org.eclipse.aether.internal.test.util.TestFileUtils;
-import org.eclipse.aether.internal.test.util.TestLoggerFactory;
 import org.eclipse.aether.internal.test.util.TestUtils;
 import org.eclipse.aether.repository.RemoteRepository;
 import org.eclipse.aether.spi.connector.transport.GetTask;
@@ -74,7 +73,7 @@ public void setUp()
         throws Exception
     {
         session = TestUtils.newSession();
-        factory = new ClasspathTransporterFactory( new TestLoggerFactory() );
+        factory = new ClasspathTransporterFactory( );
         newTransporter( "classpath:/repository" );
     }
 
diff --git a/maven-resolver-transport-file/pom.xml 
b/maven-resolver-transport-file/pom.xml
index 239a4e53..ee670189 100644
--- a/maven-resolver-transport-file/pom.xml
+++ b/maven-resolver-transport-file/pom.xml
@@ -76,6 +76,16 @@
       <artifactId>maven-resolver-test-util</artifactId>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-api</artifactId>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-simple</artifactId>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
 
   <build>
diff --git 
a/maven-resolver-transport-file/src/main/java/org/eclipse/aether/transport/file/FileTransporter.java
 
b/maven-resolver-transport-file/src/main/java/org/eclipse/aether/transport/file/FileTransporter.java
index f79111a8..7da42f2d 100644
--- 
a/maven-resolver-transport-file/src/main/java/org/eclipse/aether/transport/file/FileTransporter.java
+++ 
b/maven-resolver-transport-file/src/main/java/org/eclipse/aether/transport/file/FileTransporter.java
@@ -29,8 +29,9 @@
 import org.eclipse.aether.spi.connector.transport.PeekTask;
 import org.eclipse.aether.spi.connector.transport.PutTask;
 import org.eclipse.aether.spi.connector.transport.TransportTask;
-import org.eclipse.aether.spi.log.Logger;
 import org.eclipse.aether.transfer.NoTransporterException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * A transporter using {@link java.io.File}.
@@ -39,18 +40,17 @@
     extends AbstractTransporter
 {
 
-    private final Logger logger;
+    private static final Logger LOGGER = LoggerFactory.getLogger( 
FileTransporter.class );
 
     private final File basedir;
 
-    FileTransporter( RemoteRepository repository, Logger logger )
+    FileTransporter( RemoteRepository repository )
         throws NoTransporterException
     {
         if ( !"file".equalsIgnoreCase( repository.getProtocol() ) )
         {
             throw new NoTransporterException( repository );
         }
-        this.logger = logger;
         basedir = new File( PathUtils.basedir( repository.getUrl() ) 
).getAbsoluteFile();
     }
 
@@ -97,7 +97,7 @@ protected void implPut( PutTask task )
         {
             if ( !file.delete() && file.exists() )
             {
-                logger.debug( "Could not delete partial file " + file );
+                LOGGER.debug( "Could not delete partial file {}", file );
             }
             throw e;
         }
diff --git 
a/maven-resolver-transport-file/src/main/java/org/eclipse/aether/transport/file/FileTransporterFactory.java
 
b/maven-resolver-transport-file/src/main/java/org/eclipse/aether/transport/file/FileTransporterFactory.java
index 86ae6fcd..bf78a6b8 100644
--- 
a/maven-resolver-transport-file/src/main/java/org/eclipse/aether/transport/file/FileTransporterFactory.java
+++ 
b/maven-resolver-transport-file/src/main/java/org/eclipse/aether/transport/file/FileTransporterFactory.java
@@ -19,18 +19,12 @@
  * under the License.
  */
 
-import javax.inject.Inject;
 import javax.inject.Named;
 
 import org.eclipse.aether.RepositorySystemSession;
 import org.eclipse.aether.repository.RemoteRepository;
 import org.eclipse.aether.spi.connector.transport.Transporter;
 import org.eclipse.aether.spi.connector.transport.TransporterFactory;
-import org.eclipse.aether.spi.locator.Service;
-import org.eclipse.aether.spi.locator.ServiceLocator;
-import org.eclipse.aether.spi.log.Logger;
-import org.eclipse.aether.spi.log.LoggerFactory;
-import org.eclipse.aether.spi.log.NullLoggerFactory;
 import org.eclipse.aether.transfer.NoTransporterException;
 
 /**
@@ -38,11 +32,9 @@
  */
 @Named( "file" )
 public final class FileTransporterFactory
-    implements TransporterFactory, Service
+    implements TransporterFactory
 {
 
-    private Logger logger = NullLoggerFactory.LOGGER;
-
     private float priority;
 
     /**
@@ -55,29 +47,6 @@ public FileTransporterFactory()
         // enables default constructor
     }
 
-    @Inject
-    FileTransporterFactory( LoggerFactory loggerFactory )
-    {
-        setLoggerFactory( loggerFactory );
-    }
-
-    public void initService( ServiceLocator locator )
-    {
-        setLoggerFactory( locator.getService( LoggerFactory.class ) );
-    }
-
-    /**
-     * Sets the logger factory to use for this component.
-     * 
-     * @param loggerFactory The logger factory to use, may be {@code null} to 
disable logging.
-     * @return This component for chaining, never {@code null}.
-     */
-    public FileTransporterFactory setLoggerFactory( LoggerFactory 
loggerFactory )
-    {
-        this.logger = NullLoggerFactory.getSafeLogger( loggerFactory, 
FileTransporter.class );
-        return this;
-    }
-
     public float getPriority()
     {
         return priority;
@@ -98,7 +67,7 @@ public FileTransporterFactory setPriority( float priority )
     public Transporter newInstance( RepositorySystemSession session, 
RemoteRepository repository )
         throws NoTransporterException
     {
-        return new FileTransporter( repository, logger );
+        return new FileTransporter( repository );
     }
 
 }
diff --git 
a/maven-resolver-transport-file/src/test/java/org/eclipse/aether/transport/file/FileTransporterTest.java
 
b/maven-resolver-transport-file/src/test/java/org/eclipse/aether/transport/file/FileTransporterTest.java
index dd65bf08..f6366448 100644
--- 
a/maven-resolver-transport-file/src/test/java/org/eclipse/aether/transport/file/FileTransporterTest.java
+++ 
b/maven-resolver-transport-file/src/test/java/org/eclipse/aether/transport/file/FileTransporterTest.java
@@ -28,7 +28,6 @@
 
 import org.eclipse.aether.DefaultRepositorySystemSession;
 import org.eclipse.aether.internal.test.util.TestFileUtils;
-import org.eclipse.aether.internal.test.util.TestLoggerFactory;
 import org.eclipse.aether.internal.test.util.TestUtils;
 import org.eclipse.aether.repository.RemoteRepository;
 import org.eclipse.aether.spi.connector.transport.GetTask;
@@ -76,7 +75,7 @@ public void setUp()
         throws Exception
     {
         session = TestUtils.newSession();
-        factory = new FileTransporterFactory( new TestLoggerFactory() );
+        factory = new FileTransporterFactory( );
         repoDir = TestFileUtils.createTempDir();
         TestFileUtils.writeString( new File( repoDir, "file.txt" ), "test" );
         TestFileUtils.writeString( new File( repoDir, "empty.txt" ), "" );
diff --git a/maven-resolver-transport-http/pom.xml 
b/maven-resolver-transport-http/pom.xml
index 5ce8521e..dce3dcd9 100644
--- a/maven-resolver-transport-http/pom.xml
+++ b/maven-resolver-transport-http/pom.xml
@@ -125,7 +125,7 @@
     <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-api</artifactId>
-      <scope>test</scope>
+      <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.slf4j</groupId>
diff --git 
a/maven-resolver-transport-http/src/main/java/org/eclipse/aether/transport/http/HttpTransporter.java
 
b/maven-resolver-transport-http/src/main/java/org/eclipse/aether/transport/http/HttpTransporter.java
index 23d8f837..53b3dd04 100644
--- 
a/maven-resolver-transport-http/src/main/java/org/eclipse/aether/transport/http/HttpTransporter.java
+++ 
b/maven-resolver-transport-http/src/main/java/org/eclipse/aether/transport/http/HttpTransporter.java
@@ -70,10 +70,11 @@
 import org.eclipse.aether.spi.connector.transport.PeekTask;
 import org.eclipse.aether.spi.connector.transport.PutTask;
 import org.eclipse.aether.spi.connector.transport.TransportTask;
-import org.eclipse.aether.spi.log.Logger;
 import org.eclipse.aether.transfer.NoTransporterException;
 import org.eclipse.aether.transfer.TransferCancelledException;
 import org.eclipse.aether.util.ConfigUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * A transporter for HTTP/HTTPS.
@@ -85,7 +86,7 @@
     private static final Pattern CONTENT_RANGE_PATTERN =
         Pattern.compile( "\\s*bytes\\s+([0-9]+)\\s*-\\s*([0-9]+)\\s*/.*" );
 
-    private final Logger logger;
+    private static final Logger LOGGER = LoggerFactory.getLogger( 
HttpTransporter.class );
 
     private final AuthenticationContext repoAuthContext;
 
@@ -103,7 +104,7 @@
 
     private final LocalState state;
 
-    HttpTransporter( RemoteRepository repository, RepositorySystemSession 
session, Logger logger )
+    HttpTransporter( RemoteRepository repository, RepositorySystemSession 
session )
         throws NoTransporterException
     {
         if ( !"http".equalsIgnoreCase( repository.getProtocol() )
@@ -111,7 +112,6 @@
         {
             throw new NoTransporterException( repository );
         }
-        this.logger = logger;
         try
         {
             baseUri = new URI( repository.getUrl() ).parseServerAuthority();
@@ -332,7 +332,7 @@ private void prepare( HttpUriRequest request, 
SharingHttpContext context )
             }
             catch ( IOException e )
             {
-                logger.debug( "Failed to prepare HTTP context", e );
+                LOGGER.debug( "Failed to prepare HTTP context", e );
             }
         }
         if ( put && Boolean.TRUE.equals( state.getWebDav() ) )
@@ -376,7 +376,7 @@ else if ( status == HttpStatus.SC_CONFLICT )
             }
             catch ( IOException e )
             {
-                logger.debug( "Failed to create parent directory " + dirs.get( 
index ), e );
+                LOGGER.debug( "Failed to create parent directory {}", 
dirs.get( index ), e );
                 return;
             }
         }
@@ -397,7 +397,7 @@ else if ( status == HttpStatus.SC_CONFLICT )
             }
             catch ( IOException e )
             {
-                logger.debug( "Failed to create parent directory " + dirs.get( 
index ), e );
+                LOGGER.debug( "Failed to create parent directory {}", 
dirs.get( index ), e );
                 return;
             }
         }
diff --git 
a/maven-resolver-transport-http/src/main/java/org/eclipse/aether/transport/http/HttpTransporterFactory.java
 
b/maven-resolver-transport-http/src/main/java/org/eclipse/aether/transport/http/HttpTransporterFactory.java
index 77d2141a..5e329ca0 100644
--- 
a/maven-resolver-transport-http/src/main/java/org/eclipse/aether/transport/http/HttpTransporterFactory.java
+++ 
b/maven-resolver-transport-http/src/main/java/org/eclipse/aether/transport/http/HttpTransporterFactory.java
@@ -19,18 +19,12 @@
  * under the License.
  */
 
-import javax.inject.Inject;
 import javax.inject.Named;
 
 import org.eclipse.aether.RepositorySystemSession;
 import org.eclipse.aether.repository.RemoteRepository;
 import org.eclipse.aether.spi.connector.transport.Transporter;
 import org.eclipse.aether.spi.connector.transport.TransporterFactory;
-import org.eclipse.aether.spi.locator.Service;
-import org.eclipse.aether.spi.locator.ServiceLocator;
-import org.eclipse.aether.spi.log.Logger;
-import org.eclipse.aether.spi.log.LoggerFactory;
-import org.eclipse.aether.spi.log.NullLoggerFactory;
 import org.eclipse.aether.transfer.NoTransporterException;
 
 /**
@@ -39,11 +33,9 @@
  */
 @Named( "http" )
 public final class HttpTransporterFactory
-    implements TransporterFactory, Service
+    implements TransporterFactory
 {
 
-    private Logger logger = NullLoggerFactory.LOGGER;
-
     private float priority = 5.0f;
 
     /**
@@ -56,29 +48,6 @@ public HttpTransporterFactory()
         // enables default constructor
     }
 
-    @Inject
-    HttpTransporterFactory( LoggerFactory loggerFactory )
-    {
-        setLoggerFactory( loggerFactory );
-    }
-
-    public void initService( ServiceLocator locator )
-    {
-        setLoggerFactory( locator.getService( LoggerFactory.class ) );
-    }
-
-    /**
-     * Sets the logger factory to use for this component.
-     * 
-     * @param loggerFactory The logger factory to use, may be {@code null} to 
disable logging.
-     * @return This component for chaining, never {@code null}.
-     */
-    public HttpTransporterFactory setLoggerFactory( LoggerFactory 
loggerFactory )
-    {
-        this.logger = NullLoggerFactory.getSafeLogger( loggerFactory, 
HttpTransporter.class );
-        return this;
-    }
-
     public float getPriority()
     {
         return priority;
@@ -99,7 +68,7 @@ public HttpTransporterFactory setPriority( float priority )
     public Transporter newInstance( RepositorySystemSession session, 
RemoteRepository repository )
         throws NoTransporterException
     {
-        return new HttpTransporter( repository, session, logger );
+        return new HttpTransporter( repository, session );
     }
 
 }
diff --git 
a/maven-resolver-transport-http/src/test/java/org/eclipse/aether/transport/http/HttpServer.java
 
b/maven-resolver-transport-http/src/test/java/org/eclipse/aether/transport/http/HttpServer.java
index ae6980dd..5a863e70 100644
--- 
a/maven-resolver-transport-http/src/test/java/org/eclipse/aether/transport/http/HttpServer.java
+++ 
b/maven-resolver-transport-http/src/test/java/org/eclipse/aether/transport/http/HttpServer.java
@@ -88,7 +88,7 @@ public String toString()
         NEXUS
     }
 
-    private static final Logger log = LoggerFactory.getLogger( 
HttpServer.class );
+    private static final Logger LOGGER = LoggerFactory.getLogger( 
HttpServer.class );
 
     private File repoDir;
 
@@ -258,8 +258,8 @@ public void stop()
         public void handle( String target, Request req, HttpServletRequest 
request, HttpServletResponse response )
             throws IOException
         {
-            log.info( "{} {}{}", new Object[] { req.getMethod(), 
req.getRequestURL(),
-                req.getQueryString() != null ? "?" + req.getQueryString() : "" 
} );
+            LOGGER.info( "{} {}{}", req.getMethod(), req.getRequestURL(),
+                    req.getQueryString() != null ? "?" + req.getQueryString() 
: "");
 
             Map<String, String> headers = new TreeMap<String, String>( 
String.CASE_INSENSITIVE_ORDER );
             for ( Enumeration<String> en = req.getHeaderNames(); 
en.hasMoreElements(); )
diff --git 
a/maven-resolver-transport-http/src/test/java/org/eclipse/aether/transport/http/HttpTransporterTest.java
 
b/maven-resolver-transport-http/src/test/java/org/eclipse/aether/transport/http/HttpTransporterTest.java
index 1b03aaa6..880f2d88 100644
--- 
a/maven-resolver-transport-http/src/test/java/org/eclipse/aether/transport/http/HttpTransporterTest.java
+++ 
b/maven-resolver-transport-http/src/test/java/org/eclipse/aether/transport/http/HttpTransporterTest.java
@@ -40,7 +40,6 @@
 import org.eclipse.aether.DefaultRepositoryCache;
 import org.eclipse.aether.DefaultRepositorySystemSession;
 import org.eclipse.aether.internal.test.util.TestFileUtils;
-import org.eclipse.aether.internal.test.util.TestLoggerFactory;
 import org.eclipse.aether.internal.test.util.TestUtils;
 import org.eclipse.aether.repository.Authentication;
 import org.eclipse.aether.repository.Proxy;
@@ -113,7 +112,7 @@ public void setUp()
     {
         System.out.println( "=== " + testName.getMethodName() + " ===" );
         session = TestUtils.newSession();
-        factory = new HttpTransporterFactory( new TestLoggerFactory() );
+        factory = new HttpTransporterFactory( );
         repoDir = TestFileUtils.createTempDir();
         TestFileUtils.writeString( new File( repoDir, "file.txt" ), "test" );
         TestFileUtils.writeString( new File( repoDir, "dir/file.txt" ), "test" 
);
diff --git a/maven-resolver-transport-wagon/pom.xml 
b/maven-resolver-transport-wagon/pom.xml
index b785600a..5371d2a7 100644
--- a/maven-resolver-transport-wagon/pom.xml
+++ b/maven-resolver-transport-wagon/pom.xml
@@ -108,6 +108,16 @@
       <artifactId>maven-resolver-test-util</artifactId>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-api</artifactId>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-simple</artifactId>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
 
   <build>
diff --git 
a/maven-resolver-transport-wagon/src/main/java/org/eclipse/aether/transport/wagon/WagonTransporter.java
 
b/maven-resolver-transport-wagon/src/main/java/org/eclipse/aether/transport/wagon/WagonTransporter.java
index 8710e1ae..14a01d1e 100644
--- 
a/maven-resolver-transport-wagon/src/main/java/org/eclipse/aether/transport/wagon/WagonTransporter.java
+++ 
b/maven-resolver-transport-wagon/src/main/java/org/eclipse/aether/transport/wagon/WagonTransporter.java
@@ -52,9 +52,10 @@
 import org.eclipse.aether.spi.connector.transport.PutTask;
 import org.eclipse.aether.spi.connector.transport.TransportTask;
 import org.eclipse.aether.spi.connector.transport.Transporter;
-import org.eclipse.aether.spi.log.Logger;
 import org.eclipse.aether.transfer.NoTransporterException;
 import org.eclipse.aether.util.ConfigUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * A transporter using Maven Wagon.
@@ -71,7 +72,7 @@
 
     private static final String CONFIG_PROP_GROUP = 
"aether.connector.perms.group";
 
-    private final Logger logger;
+    private static final Logger LOGGER = LoggerFactory.getLogger( 
WagonTransporter.class );
 
     private final RemoteRepository repository;
 
@@ -100,10 +101,9 @@
     private final AtomicBoolean closed = new AtomicBoolean();
 
     WagonTransporter( WagonProvider wagonProvider, WagonConfigurator 
wagonConfigurator,
-                             RemoteRepository repository, 
RepositorySystemSession session, Logger logger )
+                             RemoteRepository repository, 
RepositorySystemSession session )
         throws NoTransporterException
     {
-        this.logger = logger;
         this.wagonProvider = wagonProvider;
         this.wagonConfigurator = wagonConfigurator;
         this.repository = repository;
@@ -124,7 +124,7 @@
         }
         catch ( Exception e )
         {
-            logger.debug( e.getMessage(), e );
+            LOGGER.debug( "No transport {}", e.getMessage(), e );
             throw new NoTransporterException( repository, e.getMessage(), e );
         }
 
@@ -300,7 +300,7 @@ private void connectWagon( Wagon wagon )
             }
             catch ( Exception e )
             {
-                logger.debug( "Could not set user agent for wagon " + 
wagon.getClass().getName() + ": " + e );
+                LOGGER.debug( "Could not set user agent for wagon {}: {}", 
wagon.getClass().getName(), e.getMessage() );
             }
         }
 
@@ -328,13 +328,13 @@ private void connectWagon( Wagon wagon )
                 String msg =
                     "Could not apply configuration for " + repository.getId() 
+ " to wagon "
                         + wagon.getClass().getName() + ":" + e.getMessage();
-                if ( logger.isDebugEnabled() )
+                if ( LOGGER.isDebugEnabled() )
                 {
-                    logger.warn( msg, e );
+                    LOGGER.warn( msg, e );
                 }
                 else
                 {
-                    logger.warn( msg );
+                    LOGGER.warn( msg );
                 }
             }
         }
@@ -353,7 +353,7 @@ private void disconnectWagon( Wagon wagon )
         }
         catch ( Exception e )
         {
-            logger.debug( "Could not disconnect wagon " + wagon, e );
+            LOGGER.debug( "Could not disconnect wagon {}", wagon, e );
         }
     }
 
@@ -456,7 +456,7 @@ private void delTempFile( File path )
     {
         if ( path != null && !path.delete() && path.exists() )
         {
-            logger.debug( "Could not delete temorary file " + path );
+            LOGGER.debug( "Could not delete temporary file {}", path );
             path.deleteOnExit();
         }
     }
diff --git 
a/maven-resolver-transport-wagon/src/main/java/org/eclipse/aether/transport/wagon/WagonTransporterFactory.java
 
b/maven-resolver-transport-wagon/src/main/java/org/eclipse/aether/transport/wagon/WagonTransporterFactory.java
index bff3406e..75329e6e 100644
--- 
a/maven-resolver-transport-wagon/src/main/java/org/eclipse/aether/transport/wagon/WagonTransporterFactory.java
+++ 
b/maven-resolver-transport-wagon/src/main/java/org/eclipse/aether/transport/wagon/WagonTransporterFactory.java
@@ -28,9 +28,6 @@
 import org.eclipse.aether.spi.connector.transport.TransporterFactory;
 import org.eclipse.aether.spi.locator.Service;
 import org.eclipse.aether.spi.locator.ServiceLocator;
-import org.eclipse.aether.spi.log.Logger;
-import org.eclipse.aether.spi.log.LoggerFactory;
-import org.eclipse.aether.spi.log.NullLoggerFactory;
 import org.eclipse.aether.transfer.NoTransporterException;
 
 /**
@@ -43,8 +40,6 @@
     implements TransporterFactory, Service
 {
 
-    private Logger logger = NullLoggerFactory.LOGGER;
-
     private WagonProvider wagonProvider;
 
     private WagonConfigurator wagonConfigurator;
@@ -62,33 +57,18 @@ public WagonTransporterFactory()
     }
 
     @Inject
-    WagonTransporterFactory( WagonProvider wagonProvider, WagonConfigurator 
wagonConfigurator,
-                             LoggerFactory loggerFactory )
+    WagonTransporterFactory( WagonProvider wagonProvider, WagonConfigurator 
wagonConfigurator )
     {
         setWagonProvider( wagonProvider );
         setWagonConfigurator( wagonConfigurator );
-        setLoggerFactory( loggerFactory );
     }
 
     public void initService( ServiceLocator locator )
     {
-        setLoggerFactory( locator.getService( LoggerFactory.class ) );
         setWagonProvider( locator.getService( WagonProvider.class ) );
         setWagonConfigurator( locator.getService( WagonConfigurator.class ) );
     }
 
-    /**
-     * Sets the logger factory to use for this component.
-     * 
-     * @param loggerFactory The logger factory to use, may be {@code null} to 
disable logging.
-     * @return This component for chaining, never {@code null}.
-     */
-    public WagonTransporterFactory setLoggerFactory( LoggerFactory 
loggerFactory )
-    {
-        this.logger = NullLoggerFactory.getSafeLogger( loggerFactory, 
WagonTransporter.class );
-        return this;
-    }
-
     /**
      * Sets the wagon provider to use to acquire and release wagon instances.
      * 
@@ -133,7 +113,7 @@ public WagonTransporterFactory setPriority( float priority )
     public Transporter newInstance( RepositorySystemSession session, 
RemoteRepository repository )
         throws NoTransporterException
     {
-        return new WagonTransporter( wagonProvider, wagonConfigurator, 
repository, session, logger );
+        return new WagonTransporter( wagonProvider, wagonConfigurator, 
repository, session );
     }
 
 }
diff --git 
a/maven-resolver-transport-wagon/src/test/java/org/eclipse/aether/transport/wagon/AbstractWagonTransporterTest.java
 
b/maven-resolver-transport-wagon/src/test/java/org/eclipse/aether/transport/wagon/AbstractWagonTransporterTest.java
index adf080ea..cd6bd556 100644
--- 
a/maven-resolver-transport-wagon/src/test/java/org/eclipse/aether/transport/wagon/AbstractWagonTransporterTest.java
+++ 
b/maven-resolver-transport-wagon/src/test/java/org/eclipse/aether/transport/wagon/AbstractWagonTransporterTest.java
@@ -35,7 +35,6 @@
 import org.eclipse.aether.ConfigurationProperties;
 import org.eclipse.aether.DefaultRepositorySystemSession;
 import org.eclipse.aether.internal.test.util.TestFileUtils;
-import org.eclipse.aether.internal.test.util.TestLoggerFactory;
 import org.eclipse.aether.internal.test.util.TestUtils;
 import org.eclipse.aether.repository.Authentication;
 import org.eclipse.aether.repository.Proxy;
@@ -99,7 +98,6 @@ public void setUp()
         factory = new WagonTransporterFactory( new WagonProvider()
         {
             public Wagon lookup( String roleHint )
-                throws Exception
             {
                 if ( "mem".equalsIgnoreCase( roleHint ) )
                 {
@@ -114,11 +112,10 @@ public void release( Wagon wagon )
         }, new WagonConfigurator()
         {
             public void configure( Wagon wagon, Object configuration )
-                throws Exception
             {
                 ( (Configurable) wagon ).setConfiguration( configuration );
             }
-        }, new TestLoggerFactory() );
+        } );
         id = UUID.randomUUID().toString().replace( "-", "" );
         fs = MemWagonUtils.getFilesystem( id );
         fs.put( "file.txt", "test" );
diff --git 
a/maven-resolver-transport-wagon/src/test/java/org/eclipse/aether/transport/wagon/PlexusSupportTest.java
 
b/maven-resolver-transport-wagon/src/test/java/org/eclipse/aether/transport/wagon/PlexusSupportTest.java
index 231fa95f..c82e6727 100644
--- 
a/maven-resolver-transport-wagon/src/test/java/org/eclipse/aether/transport/wagon/PlexusSupportTest.java
+++ 
b/maven-resolver-transport-wagon/src/test/java/org/eclipse/aether/transport/wagon/PlexusSupportTest.java
@@ -21,9 +21,7 @@
 
 import org.codehaus.plexus.ContainerConfiguration;
 import org.codehaus.plexus.PlexusTestCase;
-import org.eclipse.aether.internal.test.util.TestLoggerFactory;
 import org.eclipse.aether.spi.connector.transport.TransporterFactory;
-import org.eclipse.aether.spi.log.LoggerFactory;
 
 /**
  */
@@ -40,8 +38,6 @@ protected void customizeContainerConfiguration( 
ContainerConfiguration container
     public void testExistenceOfPlexusComponentMetadata()
         throws Exception
     {
-        getContainer().addComponent( new TestLoggerFactory(), 
LoggerFactory.class, null );
-
         TransporterFactory factory = lookup( TransporterFactory.class, "wagon" 
);
         assertNotNull( factory );
         assertEquals( WagonTransporterFactory.class, factory.getClass() );
diff --git a/pom.xml b/pom.xml
index cbaad251..60754fa3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -202,6 +202,13 @@
         <groupId>org.slf4j</groupId>
         <artifactId>slf4j-api</artifactId>
         <version>${slf4jVersion}</version>
+        <scope>provided</scope>
+      </dependency>
+      <dependency>
+        <groupId>org.slf4j</groupId>
+        <artifactId>slf4j-simple</artifactId>
+        <version>${slf4jVersion}</version>
+        <scope>test</scope>
       </dependency>
     </dependencies>
   </dependencyManagement>


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


> SLFJ - remove LoggerFactory from dependency injection
> -----------------------------------------------------
>
>                 Key: MRESOLVER-36
>                 URL: https://issues.apache.org/jira/browse/MRESOLVER-36
>             Project: Maven Resolver
>          Issue Type: Improvement
>          Components: resolver
>    Affects Versions: Maven Artifact Resolver 1.1.1
>            Reporter: Sylwester Lachiewicz
>            Priority: Minor
>
> Because Maven moved to SL4J as the primary login structure we can remove 
> {{NullLoggerFactory}} class and replace {{loggerFactory}} variables with 
> {{LoggerFactory.getLogger}}
> To maintain compatibility constructors will be Deprecated



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to