diff --git a/provider/fastbin/src/main/java/org/apache/aries/rsa/provider/fastbin/BaseActivator.java b/provider/fastbin/src/main/java/org/apache/aries/rsa/provider/fastbin/BaseActivator.java
index 380f0af..20865ad 100644
--- a/provider/fastbin/src/main/java/org/apache/aries/rsa/provider/fastbin/BaseActivator.java
+++ b/provider/fastbin/src/main/java/org/apache/aries/rsa/provider/fastbin/BaseActivator.java
@@ -40,7 +40,7 @@
 @SuppressWarnings("rawtypes")
 public class BaseActivator implements BundleActivator, Runnable {
 
-    protected final Logger logger = LoggerFactory.getLogger(getClass());
+    private static final Logger LOG = LoggerFactory.getLogger(BaseActivator.class);
     protected BundleContext bundleContext;
 
     protected ExecutorService executor = new ThreadPoolExecutor(0, 1, 0L, TimeUnit.MILLISECONDS,
@@ -224,7 +224,7 @@
             try {
                 doStart();
             } catch (Throwable t) {
-                logger.warn("Error (re)starting activator", t);
+                LOG.warn("Error (re)starting activator", t);
                 doStop();
             }
         }
diff --git a/provider/fastbin/src/main/java/org/apache/aries/rsa/provider/fastbin/tcp/AbstractInvocationStrategy.java b/provider/fastbin/src/main/java/org/apache/aries/rsa/provider/fastbin/tcp/AbstractInvocationStrategy.java
index f6c3267..0dd38eb 100644
--- a/provider/fastbin/src/main/java/org/apache/aries/rsa/provider/fastbin/tcp/AbstractInvocationStrategy.java
+++ b/provider/fastbin/src/main/java/org/apache/aries/rsa/provider/fastbin/tcp/AbstractInvocationStrategy.java
@@ -36,7 +36,7 @@
 @SuppressWarnings("rawtypes")
 public abstract class AbstractInvocationStrategy implements InvocationStrategy {
 
-    protected static final Logger LOGGER = LoggerFactory.getLogger(AbstractInvocationStrategy.class);
+    protected static final Logger LOG = LoggerFactory.getLogger(AbstractInvocationStrategy.class);
 
     @Override
     public ResponseFuture request(SerializationStrategy serializationStrategy, ClassLoader loader, Method method, Object[] args, DataByteArrayOutputStream requestStream) throws Exception {
@@ -118,13 +118,13 @@
 
         } catch(Exception e) {
 
-            LOGGER.warn("Initial Encoding response for method {} failed. Retrying", method, e);
+            LOG.warn("Initial Encoding response for method {} failed. Retrying", method, e);
             // we failed to encode the response... reposition and write that error
             try {
                 responseStream.position(pos);
                 serializationStrategy.encodeResponse(loader, null, null, new ServiceException(e.toString()), responseStream);
             } catch (Exception unexpected) {
-                LOGGER.error("Error while servicing {}", method, unexpected);
+                LOG.error("Error while servicing {}", method, unexpected);
             }
 
         } finally {
@@ -179,7 +179,7 @@
                         responseStream.position(pos);
                         serializationStrategy.encodeResponse(loader, resultType, value, new ServiceException(e.toString()), responseStream);
                     } catch (Exception unexpected) {
-                        LOGGER.error("Error while servicing {}", method, unexpected);
+                        LOG.error("Error while servicing {}", method, unexpected);
                     }
                 } finally {
                     onComplete.run();
diff --git a/provider/fastbin/src/main/java/org/apache/aries/rsa/provider/fastbin/tcp/AsyncInvocationStrategy.java b/provider/fastbin/src/main/java/org/apache/aries/rsa/provider/fastbin/tcp/AsyncInvocationStrategy.java
index 88aec0f..2ee1a11 100644
--- a/provider/fastbin/src/main/java/org/apache/aries/rsa/provider/fastbin/tcp/AsyncInvocationStrategy.java
+++ b/provider/fastbin/src/main/java/org/apache/aries/rsa/provider/fastbin/tcp/AsyncInvocationStrategy.java
@@ -42,7 +42,7 @@
 @SuppressWarnings("rawtypes")
 public class AsyncInvocationStrategy extends AbstractInvocationStrategy {
 
-    protected static final Logger LOGGER = LoggerFactory.getLogger(AsyncInvocationStrategy.class);
+    protected static final Logger LOG = LoggerFactory.getLogger(AsyncInvocationStrategy.class);
 
     private class AsyncResponseFuture implements ResponseFuture {
 
diff --git a/provider/fastbin/src/main/java/org/apache/aries/rsa/provider/fastbin/tcp/BlockingInvocationStrategy.java b/provider/fastbin/src/main/java/org/apache/aries/rsa/provider/fastbin/tcp/BlockingInvocationStrategy.java
index 1c049cd..a67e312 100644
--- a/provider/fastbin/src/main/java/org/apache/aries/rsa/provider/fastbin/tcp/BlockingInvocationStrategy.java
+++ b/provider/fastbin/src/main/java/org/apache/aries/rsa/provider/fastbin/tcp/BlockingInvocationStrategy.java
@@ -40,7 +40,7 @@
 @SuppressWarnings("rawtypes")
 public class BlockingInvocationStrategy extends AbstractInvocationStrategy {
 
-    protected static final Logger LOGGER = LoggerFactory.getLogger(BlockingInvocationStrategy.class);
+    protected static final Logger LOG = LoggerFactory.getLogger(BlockingInvocationStrategy.class);
 
     private static final Callable<Object> EMPTY_CALLABLE = new Callable<Object>() {
         public Object call() {
@@ -115,13 +115,13 @@
 
         } catch(Exception e) {
 
-            LOGGER.warn("Initial Encoding response for method {} failed. Retrying", method, e);
+            LOG.warn("Initial Encoding response for method {} failed. Retrying", method, e);
             // we failed to encode the response... reposition and write that error.
             try {
                 responseStream.position(pos);
                 serializationStrategy.encodeResponse(loader, method.getReturnType(), null, new RemoteException(e.toString()), responseStream);
             } catch (Exception unexpected) {
-                LOGGER.error("Error while servicing {}", method, unexpected);
+                LOG.error("Error while servicing {}", method, unexpected);
             }
 
         } finally {
diff --git a/provider/fastbin/src/main/java/org/apache/aries/rsa/provider/fastbin/tcp/ClientInvokerImpl.java b/provider/fastbin/src/main/java/org/apache/aries/rsa/provider/fastbin/tcp/ClientInvokerImpl.java
index c3b8a89..8366472 100644
--- a/provider/fastbin/src/main/java/org/apache/aries/rsa/provider/fastbin/tcp/ClientInvokerImpl.java
+++ b/provider/fastbin/src/main/java/org/apache/aries/rsa/provider/fastbin/tcp/ClientInvokerImpl.java
@@ -51,7 +51,7 @@
 
     public static final long DEFAULT_TIMEOUT = TimeUnit.MINUTES.toMillis(5);
 
-    protected static final Logger LOGGER = LoggerFactory.getLogger(ClientInvokerImpl.class);
+    private static final Logger LOG = LoggerFactory.getLogger(ClientInvokerImpl.class);
 
     @SuppressWarnings("rawtypes")
     private static final Map<Class, String> CLASS_TO_PRIMITIVE = new HashMap<>(8, 1.0F);
@@ -145,7 +145,7 @@
                 response.set(bais);
             }
         } catch (Exception e) {
-            LOGGER.info("Error while reading response", e);
+            LOG.info("Error while reading response", e);
         }
     }
 
@@ -263,7 +263,7 @@
                     requests.put(correlation, future);
                     pool.offer(command, correlation);
                 } catch (Exception e) {
-                    LOGGER.info("Error while sending request", e);
+                    LOG.info("Error while sending request", e);
                     future.fail(e);
                 }
             }
diff --git a/provider/fastbin/src/main/java/org/apache/aries/rsa/provider/fastbin/tcp/ServerInvokerImpl.java b/provider/fastbin/src/main/java/org/apache/aries/rsa/provider/fastbin/tcp/ServerInvokerImpl.java
index d9377e7..b490664 100644
--- a/provider/fastbin/src/main/java/org/apache/aries/rsa/provider/fastbin/tcp/ServerInvokerImpl.java
+++ b/provider/fastbin/src/main/java/org/apache/aries/rsa/provider/fastbin/tcp/ServerInvokerImpl.java
@@ -53,7 +53,7 @@
 @SuppressWarnings({"rawtypes", "unchecked"})
 public class ServerInvokerImpl implements ServerInvoker, Dispatched {
 
-    protected static final Logger LOGGER = LoggerFactory.getLogger(ServerInvokerImpl.class);
+    protected static final Logger LOG = LoggerFactory.getLogger(ServerInvokerImpl.class);
     private static final HashMap<String, Class> PRIMITIVE_TO_CLASS = new HashMap<>(8, 1.0F);
     static {
         PRIMITIVE_TO_CLASS.put("Z", boolean.class);
@@ -243,7 +243,7 @@
             Runnable task = null;
             if(holder==null) {
                 String message = "The requested service {"+service+"} is not available";
-                LOGGER.warn(message);
+                LOG.warn(message);
                 task = new SendTask(bais, correlation, transport, message);
             }
             final Object svc = holder==null ? null : holder.factory.get();
@@ -255,7 +255,7 @@
                 catch (ReflectiveOperationException reflectionEx) {
                     final String methodName = encoded_method.utf8().toString();
                     String message = "The requested method {"+methodName+"} is not available";
-                    LOGGER.warn(message);
+                    LOG.warn(message);
                     task = new SendTask(bais, correlation, transport, message);
                 }
             }
@@ -269,7 +269,7 @@
             executor.execute(task);
 
         } catch (Exception e) {
-            LOGGER.info("Error while reading request", e);
+            LOG.info("Error while reading request", e);
         }
     }
 
@@ -289,7 +289,7 @@
         }
 
         public void onAcceptError(TransportServer transportServer, Exception error) {
-            LOGGER.info("Error accepting incoming connection", error);
+            LOG.info("Error accepting incoming connection", error);
         }
     }
 
@@ -304,7 +304,7 @@
 
         public void onTransportFailure(Transport transport, IOException error) {
             if (!transport.isDisposed() && !(error instanceof EOFException)) {
-                LOGGER.info("Transport failure", error);
+                LOG.info("Transport failure", error);
             }
         }
 
@@ -344,7 +344,7 @@
                 baos.writeInt(0); // make space for the size field.
                 baos.writeVarLong(correlation);
             } catch (IOException e) { // should not happen
-                LOGGER.error("Failed to write to buffer", e);
+                LOG.error("Failed to write to buffer", e);
                 throw new RuntimeException(e);
             }
 
diff --git a/provider/fastbin/src/main/java/org/apache/aries/rsa/provider/fastbin/tcp/TransportPool.java b/provider/fastbin/src/main/java/org/apache/aries/rsa/provider/fastbin/tcp/TransportPool.java
index e47ba29..7a27018 100644
--- a/provider/fastbin/src/main/java/org/apache/aries/rsa/provider/fastbin/tcp/TransportPool.java
+++ b/provider/fastbin/src/main/java/org/apache/aries/rsa/provider/fastbin/tcp/TransportPool.java
@@ -38,7 +38,7 @@
 
 public abstract class TransportPool implements Service {
 
-    protected static final Logger LOGGER = LoggerFactory.getLogger(TransportPool.class);
+    protected static final Logger LOG = LoggerFactory.getLogger(TransportPool.class);
 
     public static final int DEFAULT_POOL_SIZE = 2;
 
@@ -114,7 +114,7 @@
             try {
                 startNewTransport();
             } catch (Exception e) {
-                LOGGER.info("Unable to start new transport", e);
+                LOG.info("Unable to start new transport", e);
             }
         }
         return null;
@@ -166,7 +166,7 @@
     }
 
     protected void startNewTransport() throws Exception {
-        LOGGER.debug("Creating new transport for: {}", this.uri);
+        LOG.debug("Creating new transport for: {}", this.uri);
         Transport transport = createTransport(this.uri);
         transport.setDispatchQueue(queue);
         transport.setProtocolCodec(createCodec());
@@ -230,7 +230,7 @@
 
         public void onTransportFailure(Transport transport, IOException error) {
             if (!transport.isDisposed()) {
-                LOGGER.info("Transport failure", error);
+                LOG.info("Transport failure", error);
                 TransportState state = transports.remove(transport);
                 if (state != null) {
                     for (Object id : state.inflight) {
diff --git a/provider/tcp/src/main/java/org/apache/aries/rsa/provider/tcp/TcpProvider.java b/provider/tcp/src/main/java/org/apache/aries/rsa/provider/tcp/TcpProvider.java
index ccfc8e9..29e404f 100644
--- a/provider/tcp/src/main/java/org/apache/aries/rsa/provider/tcp/TcpProvider.java
+++ b/provider/tcp/src/main/java/org/apache/aries/rsa/provider/tcp/TcpProvider.java
@@ -59,7 +59,7 @@
     static final String TCP_CONFIG_TYPE = "aries.tcp";
     private static final String[] SUPPORTED_INTENTS = { "osgi.basic", "osgi.async"};
 
-    private Logger logger = LoggerFactory.getLogger(TcpProvider.class);
+    private static final Logger LOG = LoggerFactory.getLogger(TcpProvider.class);
 
     private Map<Integer, TcpServer> servers = new HashMap<>();
 
@@ -88,7 +88,7 @@
             StringPlus.normalize(effectiveProperties.get(RemoteConstants.SERVICE_EXPORTED_INTENTS_EXTRA)));
         intents.removeAll(Arrays.asList(SUPPORTED_INTENTS));
         if (!intents.isEmpty()) {
-            logger.warn("Unsupported intents found: {}. Not exporting service", intents);
+            LOG.warn("Unsupported intents found: {}. Not exporting service", intents);
             return null;
         }
         TcpEndpoint endpoint = new TcpEndpoint(serviceO, effectiveProperties, this::removeServer);
diff --git a/provider/tcp/src/main/java/org/apache/aries/rsa/provider/tcp/TcpServer.java b/provider/tcp/src/main/java/org/apache/aries/rsa/provider/tcp/TcpServer.java
index b30fb9d..4f01cbf 100644
--- a/provider/tcp/src/main/java/org/apache/aries/rsa/provider/tcp/TcpServer.java
+++ b/provider/tcp/src/main/java/org/apache/aries/rsa/provider/tcp/TcpServer.java
@@ -44,7 +44,7 @@
  * (according to the target endpoint ID).
  */
 public class TcpServer implements Closeable, Runnable {
-    private Logger log = LoggerFactory.getLogger(TcpServer.class);
+    private static final Logger LOG = LoggerFactory.getLogger(TcpServer.class);
     private ServerSocket serverSocket;
     private Map<String, MethodInvoker> invokers = new ConcurrentHashMap<>();
     private volatile boolean running;
@@ -107,7 +107,7 @@
             } catch (SocketException e) { // server socket is closed
                 running = false;
             } catch (Exception e) {
-                log.warn("Error processing connection", e);
+                LOG.warn("Error processing connection", e);
             }
         }
     }
@@ -125,7 +125,7 @@
         } catch (SocketException se) {
             return; // e.g. connection closed by client
         } catch (Exception e) {
-            log.warn("Error processing service call", e);
+            LOG.warn("Error processing service call", e);
         }
     }
 
diff --git a/provider/tcp/src/main/java/org/apache/aries/rsa/provider/tcp/ser/BasicObjectInputStream.java b/provider/tcp/src/main/java/org/apache/aries/rsa/provider/tcp/ser/BasicObjectInputStream.java
index fe48ee1..c241b8c 100644
--- a/provider/tcp/src/main/java/org/apache/aries/rsa/provider/tcp/ser/BasicObjectInputStream.java
+++ b/provider/tcp/src/main/java/org/apache/aries/rsa/provider/tcp/ser/BasicObjectInputStream.java
@@ -32,7 +32,7 @@
 import org.slf4j.LoggerFactory;
 
 public class BasicObjectInputStream extends ObjectInputStream {
-    Logger log = LoggerFactory.getLogger(this.getClass());
+    private static final Logger LOG = LoggerFactory.getLogger(BasicObjectInputStream.class);
 
     private final Set<ClassLoader> loaders = new LinkedHashSet<>(); // retains insertion order
 
@@ -67,7 +67,7 @@
                     exception.addSuppressed(e);
             }
         }
-        log.debug("Error loading class using classloader of user bundle. Trying our own ClassLoader now", exception);
+        LOG.debug("Error loading class using classloader of user bundle. Trying our own ClassLoader now", exception);
         return super.resolveClass(desc);
     }
 
diff --git a/rsa/src/main/java/org/apache/aries/rsa/core/PackageUtil.java b/rsa/src/main/java/org/apache/aries/rsa/core/PackageUtil.java
index f83278e..020ced5 100644
--- a/rsa/src/main/java/org/apache/aries/rsa/core/PackageUtil.java
+++ b/rsa/src/main/java/org/apache/aries/rsa/core/PackageUtil.java
@@ -33,7 +33,7 @@
  */
 public class PackageUtil {
 
-    public static final Logger LOG = LoggerFactory.getLogger(PackageUtil.class);
+    private static final Logger LOG = LoggerFactory.getLogger(PackageUtil.class);
 
     protected static Function<Class<?>, Bundle> BUNDLE_FINDER = FrameworkUtil::getBundle;
 
