diff --git a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/web/AddFlowResource.java b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/web/AddFlowResource.java
index 7464ec5..d891374 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/web/AddFlowResource.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/web/AddFlowResource.java
@@ -22,7 +22,7 @@
  */
 public class AddFlowResource extends ServerResource {
 
-    protected static Logger log = LoggerFactory.getLogger(AddFlowResource.class);
+    protected final static Logger log = LoggerFactory.getLogger(AddFlowResource.class);
 
     /**
      * Implement the API.
diff --git a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/web/AddShortestPathFlowResource.java b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/web/AddShortestPathFlowResource.java
index c454b0f..7a4e88c 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/web/AddShortestPathFlowResource.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/web/AddShortestPathFlowResource.java
@@ -22,7 +22,7 @@
  */
 public class AddShortestPathFlowResource extends ServerResource {
 
-    protected static Logger log = LoggerFactory.getLogger(AddShortestPathFlowResource.class);
+    protected final static Logger log = LoggerFactory.getLogger(AddShortestPathFlowResource.class);
 
     /**
      * Implement the API.
diff --git a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/web/ClearFlowResource.java b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/web/ClearFlowResource.java
index db591ae..b8942b9 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/web/ClearFlowResource.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/web/ClearFlowResource.java
@@ -17,7 +17,7 @@
  *   GET /wm/flow/clear/{flow-id}/json
  */
 public class ClearFlowResource extends ServerResource {
-    protected static Logger log = LoggerFactory.getLogger(ClearFlowResource.class);
+    protected final static Logger log = LoggerFactory.getLogger(ClearFlowResource.class);
 
     /**
      * Implement the API.
diff --git a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/web/DatapathSummarySerializer.java b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/web/DatapathSummarySerializer.java
index 9133077..4faf350 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/web/DatapathSummarySerializer.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/web/DatapathSummarySerializer.java
@@ -10,7 +10,7 @@
 import org.slf4j.LoggerFactory;
 
 public class DatapathSummarySerializer extends JsonSerializer<String>{
-	static Logger log = LoggerFactory.getLogger(DatapathSummarySerializer.class);
+	final static Logger log = LoggerFactory.getLogger(DatapathSummarySerializer.class);
 	
 	@Override
 	public void serialize(String datapathSummary, JsonGenerator jGen,
diff --git a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/web/DeleteFlowResource.java b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/web/DeleteFlowResource.java
index 5b2bad4..f4e23b8 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/web/DeleteFlowResource.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/web/DeleteFlowResource.java
@@ -17,7 +17,7 @@
  *   GET /wm/flow/delete/{flow-id}/json
  */
 public class DeleteFlowResource extends ServerResource {
-    protected static Logger log = LoggerFactory.getLogger(DeleteFlowResource.class);
+    protected final static Logger log = LoggerFactory.getLogger(DeleteFlowResource.class);
 
     /**
      * Implement the API.
diff --git a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/web/GetAllFlowsByEndpointsResource.java b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/web/GetAllFlowsByEndpointsResource.java
index 0308e89..1ac98c0 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/web/GetAllFlowsByEndpointsResource.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/web/GetAllFlowsByEndpointsResource.java
@@ -30,7 +30,7 @@
  *   GET /wm/flow/getall-by-endpoints/{src-dpid}/{src-port}/{dst-dpid}/{dst-port}/json"
  */
 public class GetAllFlowsByEndpointsResource extends ServerResource {
-    protected static Logger log = LoggerFactory.getLogger(GetAllFlowsByEndpointsResource.class);
+    protected final static Logger log = LoggerFactory.getLogger(GetAllFlowsByEndpointsResource.class);
 
     /**
      * Implement the API.
diff --git a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/web/GetAllFlowsByInstallerIdResource.java b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/web/GetAllFlowsByInstallerIdResource.java
index 43f1618..870548e 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/web/GetAllFlowsByInstallerIdResource.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/web/GetAllFlowsByInstallerIdResource.java
@@ -33,7 +33,7 @@
  *   GET /wm/flow/getall-by-installer-id/{installer-id}/{src-dpid}/{src-port}/{dst-dpid}/{dst-port}/json"
  */
 public class GetAllFlowsByInstallerIdResource extends ServerResource {
-    protected static Logger log = LoggerFactory.getLogger(GetAllFlowsByInstallerIdResource.class);
+    protected final static Logger log = LoggerFactory.getLogger(GetAllFlowsByInstallerIdResource.class);
 
     /**
      * Implement the API.
diff --git a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/web/GetAllFlowsResource.java b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/web/GetAllFlowsResource.java
index ab88348..a4ea960 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/web/GetAllFlowsResource.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/web/GetAllFlowsResource.java
@@ -16,7 +16,7 @@
  *   GET /wm/flow/getall/json"
  */
 public class GetAllFlowsResource extends ServerResource {
-    protected static Logger log = LoggerFactory.getLogger(GetAllFlowsResource.class);
+    protected final static Logger log = LoggerFactory.getLogger(GetAllFlowsResource.class);
 
     /**
      * Implement the API.
diff --git a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/web/GetFlowByIdResource.java b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/web/GetFlowByIdResource.java
index 77a898c..9ceef6e 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/web/GetFlowByIdResource.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/web/GetFlowByIdResource.java
@@ -17,7 +17,7 @@
  *   GET /wm/flow/get/{flow-id}/json
  */
 public class GetFlowByIdResource extends ServerResource {
-    protected static Logger log = LoggerFactory.getLogger(GetFlowByIdResource.class);
+    protected final static Logger log = LoggerFactory.getLogger(GetFlowByIdResource.class);
 
     /**
      * Implement the API.
diff --git a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/web/GetSummaryFlowsResource.java b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/web/GetSummaryFlowsResource.java
index 67e1ad6..89e5b01 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/web/GetSummaryFlowsResource.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/web/GetSummaryFlowsResource.java
@@ -23,7 +23,7 @@
  *   GET /wm/flow/getsummary/{flow-id}/{max-flows}/json"
  */
 public class GetSummaryFlowsResource extends ServerResource {
-    protected static Logger log = LoggerFactory.getLogger(GetSummaryFlowsResource.class);
+    protected final static Logger log = LoggerFactory.getLogger(GetSummaryFlowsResource.class);
 
     /**
      * Implement the API.
