diff --git a/src/main/java/net/floodlightcontroller/core/internal/Controller.java b/src/main/java/net/floodlightcontroller/core/internal/Controller.java
index 134a3b0..17f1be8 100644
--- a/src/main/java/net/floodlightcontroller/core/internal/Controller.java
+++ b/src/main/java/net/floodlightcontroller/core/internal/Controller.java
@@ -152,7 +152,7 @@
 public class Controller implements IFloodlightProviderService, 
             IStorageSourceListener {
     
-    protected static Logger log = LoggerFactory.getLogger(Controller.class);
+    protected final static Logger log = LoggerFactory.getLogger(Controller.class);
 
     private static final String ERROR_DATABASE = 
             "The controller could not communicate with the system database.";
diff --git a/src/main/java/net/floodlightcontroller/core/internal/OFSwitchImpl.java b/src/main/java/net/floodlightcontroller/core/internal/OFSwitchImpl.java
index 467c74a..5810967 100644
--- a/src/main/java/net/floodlightcontroller/core/internal/OFSwitchImpl.java
+++ b/src/main/java/net/floodlightcontroller/core/internal/OFSwitchImpl.java
@@ -79,7 +79,7 @@
 public class OFSwitchImpl implements IOFSwitch, IOnosRemoteSwitch {
     // TODO: should we really do logging in the class or should we throw
     // exception that can then be handled by callers?
-    protected static Logger log = LoggerFactory.getLogger(OFSwitchImpl.class);
+    protected final static Logger log = LoggerFactory.getLogger(OFSwitchImpl.class);
 
     private static final String HA_CHECK_SWITCH = 
             "Check the health of the indicated switch.  If the problem " +
diff --git a/src/main/java/net/floodlightcontroller/core/internal/RoleChanger.java b/src/main/java/net/floodlightcontroller/core/internal/RoleChanger.java
index 4924fbc..194935c 100644
--- a/src/main/java/net/floodlightcontroller/core/internal/RoleChanger.java
+++ b/src/main/java/net/floodlightcontroller/core/internal/RoleChanger.java
@@ -120,7 +120,7 @@
     protected Thread workerThread;
     protected long timeout;
     protected static long DEFAULT_TIMEOUT = 15L*1000*1000*1000L; // 15s
-    protected static Logger log = LoggerFactory.getLogger(RoleChanger.class);
+    protected final static Logger log = LoggerFactory.getLogger(RoleChanger.class);
     /** 
      * A queued task to be handled by the Role changer thread. 
      */
diff --git a/src/main/java/net/floodlightcontroller/core/module/FloodlightModuleLoader.java b/src/main/java/net/floodlightcontroller/core/module/FloodlightModuleLoader.java
index 5561327..2686d00 100644
--- a/src/main/java/net/floodlightcontroller/core/module/FloodlightModuleLoader.java
+++ b/src/main/java/net/floodlightcontroller/core/module/FloodlightModuleLoader.java
@@ -32,7 +32,7 @@
  *
  */
 public class FloodlightModuleLoader {
-    protected static Logger logger = 
+    protected final static Logger logger = 
             LoggerFactory.getLogger(FloodlightModuleLoader.class);
 
     protected static Map<Class<? extends IFloodlightService>,
diff --git a/src/main/java/net/floodlightcontroller/core/module/ModuleLoaderResource.java b/src/main/java/net/floodlightcontroller/core/module/ModuleLoaderResource.java
index a73a17f..7f7b903 100644
--- a/src/main/java/net/floodlightcontroller/core/module/ModuleLoaderResource.java
+++ b/src/main/java/net/floodlightcontroller/core/module/ModuleLoaderResource.java
@@ -17,7 +17,7 @@
  * @author Rob Sherwood
  */
 public class ModuleLoaderResource extends ServerResource {
-    protected static Logger log = 
+    protected final static Logger log = 
             LoggerFactory.getLogger(ModuleLoaderResource.class);
     
     /**
diff --git a/src/main/java/net/floodlightcontroller/core/util/ListenerDispatcher.java b/src/main/java/net/floodlightcontroller/core/util/ListenerDispatcher.java
index 58b543c..ea63c25 100644
--- a/src/main/java/net/floodlightcontroller/core/util/ListenerDispatcher.java
+++ b/src/main/java/net/floodlightcontroller/core/util/ListenerDispatcher.java
@@ -34,7 +34,7 @@
  *
  */
 public class ListenerDispatcher<U, T extends IListener<U>> {
-    protected static Logger logger = LoggerFactory.getLogger(ListenerDispatcher.class);
+    protected final static Logger logger = LoggerFactory.getLogger(ListenerDispatcher.class);
     List<T> listeners = null;
     
     private void visit(List<T> newlisteners, U type, HashSet<T> visited, 
diff --git a/src/main/java/net/floodlightcontroller/core/util/SingletonTask.java b/src/main/java/net/floodlightcontroller/core/util/SingletonTask.java
index 07729e5..0e03144 100644
--- a/src/main/java/net/floodlightcontroller/core/util/SingletonTask.java
+++ b/src/main/java/net/floodlightcontroller/core/util/SingletonTask.java
@@ -37,7 +37,7 @@
  * * If the task has begun, set a bit to restart it after the current task finishes
  */
 public class SingletonTask {
-    protected static Logger logger = LoggerFactory.getLogger(SingletonTask.class);
+    protected final static Logger logger = LoggerFactory.getLogger(SingletonTask.class);
             
     protected static class SingletonTaskContext  {
         protected boolean taskShouldRun = false;
diff --git a/src/main/java/net/floodlightcontroller/core/web/AllSwitchStatisticsResource.java b/src/main/java/net/floodlightcontroller/core/web/AllSwitchStatisticsResource.java
index d012fc8..a014795 100644
--- a/src/main/java/net/floodlightcontroller/core/web/AllSwitchStatisticsResource.java
+++ b/src/main/java/net/floodlightcontroller/core/web/AllSwitchStatisticsResource.java
@@ -39,7 +39,7 @@
  * @author readams
  */
 public class AllSwitchStatisticsResource extends SwitchResourceBase {
-    protected static Logger log = 
+    protected final static Logger log = 
         LoggerFactory.getLogger(AllSwitchStatisticsResource.class);
     
     @Get("json")
diff --git a/src/main/java/net/floodlightcontroller/core/web/ControllerRoleResource.java b/src/main/java/net/floodlightcontroller/core/web/ControllerRoleResource.java
index 652058e..2ed87cb 100644
--- a/src/main/java/net/floodlightcontroller/core/web/ControllerRoleResource.java
+++ b/src/main/java/net/floodlightcontroller/core/web/ControllerRoleResource.java
@@ -14,7 +14,7 @@
 
 public class ControllerRoleResource extends ServerResource {
 
-    protected static Logger log = LoggerFactory.getLogger(ControllerRoleResource.class);
+    protected final static Logger log = LoggerFactory.getLogger(ControllerRoleResource.class);
 
     @Get("json")
     public RoleInfo getRole() {
diff --git a/src/main/java/net/floodlightcontroller/core/web/EventHistoryTopologyClusterResource.java b/src/main/java/net/floodlightcontroller/core/web/EventHistoryTopologyClusterResource.java
index 648866f..d1888d3 100644
--- a/src/main/java/net/floodlightcontroller/core/web/EventHistoryTopologyClusterResource.java
+++ b/src/main/java/net/floodlightcontroller/core/web/EventHistoryTopologyClusterResource.java
@@ -16,7 +16,7 @@
  */
 public class EventHistoryTopologyClusterResource extends ServerResource {
     // TODO - Move this to the LinkDiscovery rest API
-    protected static Logger log = 
+    protected final static Logger log = 
             LoggerFactory.getLogger(EventHistoryTopologyClusterResource.class);
 
     @Get("json")
diff --git a/src/main/java/net/floodlightcontroller/core/web/EventHistoryTopologyLinkResource.java b/src/main/java/net/floodlightcontroller/core/web/EventHistoryTopologyLinkResource.java
index 79c4006..e497228 100644
--- a/src/main/java/net/floodlightcontroller/core/web/EventHistoryTopologyLinkResource.java
+++ b/src/main/java/net/floodlightcontroller/core/web/EventHistoryTopologyLinkResource.java
@@ -16,7 +16,7 @@
  */
 public class EventHistoryTopologyLinkResource extends ServerResource {
     // TODO - Move this to the DeviceManager Rest API
-    protected static Logger log = 
+    protected final static Logger log = 
             LoggerFactory.getLogger(EventHistoryTopologyLinkResource.class);
 
     @Get("json")
diff --git a/src/main/java/net/floodlightcontroller/core/web/SwitchResourceBase.java b/src/main/java/net/floodlightcontroller/core/web/SwitchResourceBase.java
index d810024..1c138f6 100644
--- a/src/main/java/net/floodlightcontroller/core/web/SwitchResourceBase.java
+++ b/src/main/java/net/floodlightcontroller/core/web/SwitchResourceBase.java
@@ -48,7 +48,7 @@
  *
  */
 public class SwitchResourceBase extends ServerResource {
-    protected static Logger log = LoggerFactory.getLogger(SwitchResourceBase.class);
+    protected final static Logger log = LoggerFactory.getLogger(SwitchResourceBase.class);
     
     public enum REQUESTTYPE {
         OFSTATS,
diff --git a/src/main/java/net/floodlightcontroller/core/web/SwitchRoleResource.java b/src/main/java/net/floodlightcontroller/core/web/SwitchRoleResource.java
index 0d73f93..944c725 100644
--- a/src/main/java/net/floodlightcontroller/core/web/SwitchRoleResource.java
+++ b/src/main/java/net/floodlightcontroller/core/web/SwitchRoleResource.java
@@ -14,7 +14,7 @@
 
 public class SwitchRoleResource extends ServerResource {
 
-    protected static Logger log = LoggerFactory.getLogger(SwitchRoleResource.class);
+    protected final static Logger log = LoggerFactory.getLogger(SwitchRoleResource.class);
 
     @Get("json")
     public Object getRole() {
diff --git a/src/main/java/net/floodlightcontroller/core/web/SwitchStatisticsResource.java b/src/main/java/net/floodlightcontroller/core/web/SwitchStatisticsResource.java
index 57771f7..a0cada7 100644
--- a/src/main/java/net/floodlightcontroller/core/web/SwitchStatisticsResource.java
+++ b/src/main/java/net/floodlightcontroller/core/web/SwitchStatisticsResource.java
@@ -30,7 +30,7 @@
  * @author readams
  */
 public class SwitchStatisticsResource extends SwitchResourceBase {
-    protected static Logger log = 
+    protected final static Logger log = 
         LoggerFactory.getLogger(SwitchStatisticsResource.class);
 
     @Get("json")
diff --git a/src/main/java/net/floodlightcontroller/counter/CounterStore.java b/src/main/java/net/floodlightcontroller/counter/CounterStore.java
index 26d1302..15ce53b 100644
--- a/src/main/java/net/floodlightcontroller/counter/CounterStore.java
+++ b/src/main/java/net/floodlightcontroller/counter/CounterStore.java
@@ -52,7 +52,7 @@
  *
  */
 public class CounterStore implements IFloodlightModule, ICounterStoreService {
-    protected static Logger log = LoggerFactory.getLogger(CounterStore.class);
+    protected final static Logger log = LoggerFactory.getLogger(CounterStore.class);
 
     public enum NetworkLayer {
         L2, L3, L4
diff --git a/src/main/java/net/floodlightcontroller/devicemanager/internal/Device.java b/src/main/java/net/floodlightcontroller/devicemanager/internal/Device.java
index 645125e..05ebcf3 100755
--- a/src/main/java/net/floodlightcontroller/devicemanager/internal/Device.java
+++ b/src/main/java/net/floodlightcontroller/devicemanager/internal/Device.java
@@ -50,7 +50,7 @@
  */
 @JsonSerialize(using=DeviceSerializer.class)
 public class Device implements IDevice {
-    protected static Logger log =
+    protected final static Logger log =
             LoggerFactory.getLogger(Device.class);
 
     protected Long deviceKey;
diff --git a/src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceManagerImpl.java b/src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceManagerImpl.java
index 04543ac..031a528 100755
--- a/src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceManagerImpl.java
+++ b/src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceManagerImpl.java
@@ -91,7 +91,7 @@
 IDeviceService, IOFMessageListener, ITopologyListener,
 IFloodlightModule, IEntityClassListener,
 IFlowReconcileListener, IInfoProvider, IHAListener {
-    protected static Logger logger =
+    protected final static Logger logger =
             LoggerFactory.getLogger(DeviceManagerImpl.class);
 
     protected IFloodlightProviderService floodlightProvider;
diff --git a/src/main/java/net/floodlightcontroller/devicemanager/internal/IndexedEntity.java b/src/main/java/net/floodlightcontroller/devicemanager/internal/IndexedEntity.java
index 3e0829d..3bb9bfa 100644
--- a/src/main/java/net/floodlightcontroller/devicemanager/internal/IndexedEntity.java
+++ b/src/main/java/net/floodlightcontroller/devicemanager/internal/IndexedEntity.java
@@ -19,7 +19,7 @@
     protected EnumSet<DeviceField> keyFields;
     protected Entity entity;
     private int hashCode = 0;
-    protected static Logger logger =
+    protected final static Logger logger =
             LoggerFactory.getLogger(IndexedEntity.class);
     /**
      * Create a new {@link IndexedEntity} for the given {@link Entity} using 
diff --git a/src/main/java/net/floodlightcontroller/flowcache/FlowReconcileManager.java b/src/main/java/net/floodlightcontroller/flowcache/FlowReconcileManager.java
index d5d323d..b221b84 100644
--- a/src/main/java/net/floodlightcontroller/flowcache/FlowReconcileManager.java
+++ b/src/main/java/net/floodlightcontroller/flowcache/FlowReconcileManager.java
@@ -35,7 +35,7 @@
         implements IFloodlightModule, IFlowReconcileService {
 
     /** The logger. */
-    private static Logger logger =
+    private final static Logger logger =
                         LoggerFactory.getLogger(FlowReconcileManager.class);
     
     /** Reference to dependent modules */
diff --git a/src/main/java/net/floodlightcontroller/forwarding/Forwarding.java b/src/main/java/net/floodlightcontroller/forwarding/Forwarding.java
index 3fc7ae9..28369eb 100644
--- a/src/main/java/net/floodlightcontroller/forwarding/Forwarding.java
+++ b/src/main/java/net/floodlightcontroller/forwarding/Forwarding.java
@@ -59,7 +59,7 @@
 
 @LogMessageCategory("Flow Programming")
 public class Forwarding extends ForwardingBase implements IFloodlightModule {
-    protected static Logger log = LoggerFactory.getLogger(Forwarding.class);
+    protected final static Logger log = LoggerFactory.getLogger(Forwarding.class);
 
     @Override
     @LogMessageDoc(level="ERROR",
diff --git a/src/main/java/net/floodlightcontroller/perfmon/PerfMonDataResource.java b/src/main/java/net/floodlightcontroller/perfmon/PerfMonDataResource.java
index c43708d..297c44e 100644
--- a/src/main/java/net/floodlightcontroller/perfmon/PerfMonDataResource.java
+++ b/src/main/java/net/floodlightcontroller/perfmon/PerfMonDataResource.java
@@ -12,7 +12,7 @@
  * @author subrata
  */
 public class PerfMonDataResource extends ServerResource {
-    protected static Logger logger = LoggerFactory.getLogger(PerfMonDataResource.class);  
+    protected final static Logger logger = LoggerFactory.getLogger(PerfMonDataResource.class);  
     
     @Get("json")
     public CumulativeTimeBucket handleApiQuery() {        
diff --git a/src/main/java/net/floodlightcontroller/restserver/RestApiServer.java b/src/main/java/net/floodlightcontroller/restserver/RestApiServer.java
index c158fdd..daf1684 100644
--- a/src/main/java/net/floodlightcontroller/restserver/RestApiServer.java
+++ b/src/main/java/net/floodlightcontroller/restserver/RestApiServer.java
@@ -32,7 +32,7 @@
 
 public class RestApiServer
     implements IFloodlightModule, IRestApiService {
-    protected static Logger logger = LoggerFactory.getLogger(RestApiServer.class);
+    protected final static Logger logger = LoggerFactory.getLogger(RestApiServer.class);
     protected List<RestletRoutable> restlets;
     protected FloodlightModuleContext fmlContext;
     protected int restPort = 8080;
diff --git a/src/main/java/net/floodlightcontroller/routing/ForwardingBase.java b/src/main/java/net/floodlightcontroller/routing/ForwardingBase.java
index 22312c1..348a7af 100644
--- a/src/main/java/net/floodlightcontroller/routing/ForwardingBase.java
+++ b/src/main/java/net/floodlightcontroller/routing/ForwardingBase.java
@@ -68,7 +68,7 @@
 public abstract class ForwardingBase 
     implements IOFMessageListener, IDeviceListener {
     
-    protected static Logger log =
+    protected final static Logger log =
             LoggerFactory.getLogger(ForwardingBase.class);
 
     protected static int OFMESSAGE_DAMPER_CAPACITY = 50000; // TODO: find sweet spot
diff --git a/src/main/java/net/floodlightcontroller/staticflowentry/StaticFlowEntries.java b/src/main/java/net/floodlightcontroller/staticflowentry/StaticFlowEntries.java
index ba28619..e733843 100644
--- a/src/main/java/net/floodlightcontroller/staticflowentry/StaticFlowEntries.java
+++ b/src/main/java/net/floodlightcontroller/staticflowentry/StaticFlowEntries.java
@@ -47,7 +47,7 @@
  */
 @LogMessageCategory("Static Flow Pusher")
 public class StaticFlowEntries {
-    protected static Logger log = LoggerFactory.getLogger(StaticFlowEntries.class);
+    protected final static Logger log = LoggerFactory.getLogger(StaticFlowEntries.class);
     
     private static class SubActionStruct {
         OFAction action;
diff --git a/src/main/java/net/floodlightcontroller/staticflowentry/StaticFlowEntryPusher.java b/src/main/java/net/floodlightcontroller/staticflowentry/StaticFlowEntryPusher.java
index 4ed59d7..d816d66 100644
--- a/src/main/java/net/floodlightcontroller/staticflowentry/StaticFlowEntryPusher.java
+++ b/src/main/java/net/floodlightcontroller/staticflowentry/StaticFlowEntryPusher.java
@@ -55,7 +55,7 @@
 public class StaticFlowEntryPusher 
     implements IOFSwitchListener, IFloodlightModule, IStaticFlowEntryPusherService,
         IStorageSourceListener, IOFMessageListener, IHAListener {
-    protected static Logger log = LoggerFactory.getLogger(StaticFlowEntryPusher.class);
+    protected final static Logger log = LoggerFactory.getLogger(StaticFlowEntryPusher.class);
     public static final String StaticFlowName = "staticflowentry";
     
     public static final int STATIC_FLOW_APP_ID = 10;
diff --git a/src/main/java/net/floodlightcontroller/staticflowentry/web/ClearStaticFlowEntriesResource.java b/src/main/java/net/floodlightcontroller/staticflowentry/web/ClearStaticFlowEntriesResource.java
index c1d826a..f103e99 100644
--- a/src/main/java/net/floodlightcontroller/staticflowentry/web/ClearStaticFlowEntriesResource.java
+++ b/src/main/java/net/floodlightcontroller/staticflowentry/web/ClearStaticFlowEntriesResource.java
@@ -11,7 +11,7 @@
 import org.slf4j.LoggerFactory;
 
 public class ClearStaticFlowEntriesResource extends ServerResource {
-    protected static Logger log = LoggerFactory.getLogger(ClearStaticFlowEntriesResource.class);
+    protected final static Logger log = LoggerFactory.getLogger(ClearStaticFlowEntriesResource.class);
     
     @Get
     public void ClearStaticFlowEntries() {
diff --git a/src/main/java/net/floodlightcontroller/staticflowentry/web/ListStaticFlowEntriesResource.java b/src/main/java/net/floodlightcontroller/staticflowentry/web/ListStaticFlowEntriesResource.java
index 0ad778f..2bb53ba 100644
--- a/src/main/java/net/floodlightcontroller/staticflowentry/web/ListStaticFlowEntriesResource.java
+++ b/src/main/java/net/floodlightcontroller/staticflowentry/web/ListStaticFlowEntriesResource.java
@@ -14,7 +14,7 @@
 import org.slf4j.LoggerFactory;
 
 public class ListStaticFlowEntriesResource extends ServerResource {
-    protected static Logger log = LoggerFactory.getLogger(ListStaticFlowEntriesResource.class);
+    protected final static Logger log = LoggerFactory.getLogger(ListStaticFlowEntriesResource.class);
     
     @Get
     public Map<String, Map<String, OFFlowMod>> ListStaticFlowEntries() {
diff --git a/src/main/java/net/floodlightcontroller/staticflowentry/web/StaticFlowEntryPusherResource.java b/src/main/java/net/floodlightcontroller/staticflowentry/web/StaticFlowEntryPusherResource.java
index 3b750ae..2886a58 100644
--- a/src/main/java/net/floodlightcontroller/staticflowentry/web/StaticFlowEntryPusherResource.java
+++ b/src/main/java/net/floodlightcontroller/staticflowentry/web/StaticFlowEntryPusherResource.java
@@ -40,7 +40,7 @@
  */
 @LogMessageCategory("Static Flow Pusher")
 public class StaticFlowEntryPusherResource extends ServerResource {
-    protected static Logger log = LoggerFactory.getLogger(StaticFlowEntryPusherResource.class);
+    protected final static Logger log = LoggerFactory.getLogger(StaticFlowEntryPusherResource.class);
     
     /**
      * Checks to see if the user matches IP information without
diff --git a/src/main/java/net/floodlightcontroller/storage/AbstractStorageSource.java b/src/main/java/net/floodlightcontroller/storage/AbstractStorageSource.java
index aae3962..20d6599 100644
--- a/src/main/java/net/floodlightcontroller/storage/AbstractStorageSource.java
+++ b/src/main/java/net/floodlightcontroller/storage/AbstractStorageSource.java
@@ -49,7 +49,7 @@
 @LogMessageCategory("System Database")
 public abstract class AbstractStorageSource 
     implements IStorageSourceService, IFloodlightModule {
-    protected static Logger logger = LoggerFactory.getLogger(AbstractStorageSource.class);
+    protected final static Logger logger = LoggerFactory.getLogger(AbstractStorageSource.class);
 
     // Shared instance of the executor to use to execute the storage tasks.
     // We make this a single threaded executor, because if we used a thread pool
diff --git a/src/main/java/net/floodlightcontroller/storage/nosql/NoSqlStorageSource.java b/src/main/java/net/floodlightcontroller/storage/nosql/NoSqlStorageSource.java
index d7e5f95..6624932 100644
--- a/src/main/java/net/floodlightcontroller/storage/nosql/NoSqlStorageSource.java
+++ b/src/main/java/net/floodlightcontroller/storage/nosql/NoSqlStorageSource.java
@@ -49,7 +49,7 @@
 import net.floodlightcontroller.storage.TypeMismatchStorageException;
 
 public abstract class NoSqlStorageSource extends AbstractStorageSource {
-    protected static Logger log = LoggerFactory.getLogger(NoSqlStorageSource.class);
+    protected final static Logger log = LoggerFactory.getLogger(NoSqlStorageSource.class);
 
     public enum ColumnIndexMode { NOT_INDEXED, RANGE_INDEXED, EQUALITY_INDEXED };
     
diff --git a/src/main/java/net/floodlightcontroller/storage/web/StorageNotifyResource.java b/src/main/java/net/floodlightcontroller/storage/web/StorageNotifyResource.java
index fcfa96f..081c7f9 100644
--- a/src/main/java/net/floodlightcontroller/storage/web/StorageNotifyResource.java
+++ b/src/main/java/net/floodlightcontroller/storage/web/StorageNotifyResource.java
@@ -32,7 +32,7 @@
 import org.slf4j.LoggerFactory;
 
 public class StorageNotifyResource extends ServerResource {
-    protected static Logger log = LoggerFactory.getLogger(StorageNotifyResource.class);
+    protected final static Logger log = LoggerFactory.getLogger(StorageNotifyResource.class);
     
     @Post("json")
     public Map<String,Object> notify(String entity) throws Exception {
diff --git a/src/main/java/net/floodlightcontroller/topology/TopologyInstance.java b/src/main/java/net/floodlightcontroller/topology/TopologyInstance.java
index 85ac6b8..bda36a6 100644
--- a/src/main/java/net/floodlightcontroller/topology/TopologyInstance.java
+++ b/src/main/java/net/floodlightcontroller/topology/TopologyInstance.java
@@ -38,7 +38,7 @@
     public static final int MAX_PATH_WEIGHT = Integer.MAX_VALUE - MAX_LINK_WEIGHT - 1;
     public static final int PATH_CACHE_SIZE = 1000;
 
-    protected static Logger log = LoggerFactory.getLogger(TopologyInstance.class);
+    protected final static Logger log = LoggerFactory.getLogger(TopologyInstance.class);
 
     protected Map<Long, Set<Short>> switchPorts; // Set of ports for each switch
     /** Set of switch ports that are marked as blocked.  A set of blocked
diff --git a/src/main/java/net/floodlightcontroller/topology/TopologyManager.java b/src/main/java/net/floodlightcontroller/topology/TopologyManager.java
index a47a5f2..3e624e7 100644
--- a/src/main/java/net/floodlightcontroller/topology/TopologyManager.java
+++ b/src/main/java/net/floodlightcontroller/topology/TopologyManager.java
@@ -61,7 +61,7 @@
         IRoutingService, ILinkDiscoveryListener,
         IOFMessageListener, IHAListener {
 
-    protected static Logger log = LoggerFactory.getLogger(TopologyManager.class);
+    protected final static Logger log = LoggerFactory.getLogger(TopologyManager.class);
 
     public static final String CONTEXT_TUNNEL_ENABLED = 
             "com.bigswitch.floodlight.topologymanager.tunnelEnabled";
