diff --git a/apps/artemis/src/main/java/org/onosproject/artemis/impl/ArtemisConfig.java b/apps/artemis/src/main/java/org/onosproject/artemis/impl/ArtemisConfig.java
index b21c5f6..9d188dd 100644
--- a/apps/artemis/src/main/java/org/onosproject/artemis/impl/ArtemisConfig.java
+++ b/apps/artemis/src/main/java/org/onosproject/artemis/impl/ArtemisConfig.java
@@ -399,7 +399,7 @@
                 try {
                     asnPath.add(path.getInt(i));
                 } catch (JSONException e) {
-                    e.printStackTrace();
+                    log.warn("checkPath", e);
                 }
             }
             // reverse the list to get path starting from origin
diff --git a/apps/artemis/src/main/java/org/onosproject/artemis/impl/ArtemisDeaggregatorImpl.java b/apps/artemis/src/main/java/org/onosproject/artemis/impl/ArtemisDeaggregatorImpl.java
index 32dbb8a..d9141f4 100644
--- a/apps/artemis/src/main/java/org/onosproject/artemis/impl/ArtemisDeaggregatorImpl.java
+++ b/apps/artemis/src/main/java/org/onosproject/artemis/impl/ArtemisDeaggregatorImpl.java
@@ -23,7 +23,6 @@
 import io.netty.buffer.Unpooled;
 import io.netty.channel.ChannelHandlerContext;
 import io.netty.util.CharsetUtil;
-import org.apache.commons.lang.exception.ExceptionUtils;
 import org.apache.felix.scr.annotations.Activate;
 import org.apache.felix.scr.annotations.Component;
 import org.apache.felix.scr.annotations.Deactivate;
@@ -395,8 +394,7 @@
                             ByteBuf buffer = Unpooled.copiedBuffer(jsonInString, CharsetUtil.UTF_8);
                             ctx.writeAndFlush(buffer);
                         } catch (JsonProcessingException e) {
-                            e.printStackTrace();
-                            log.warn(ExceptionUtils.getFullStackTrace(e));
+                            log.warn("processMoasPacket()", e);
                         }
 
                         remoteTunnelIp = IpAddress.valueOf(msg.getLocalIp());
diff --git a/apps/artemis/src/main/java/org/onosproject/artemis/impl/moas/MoasClientHandler.java b/apps/artemis/src/main/java/org/onosproject/artemis/impl/moas/MoasClientHandler.java
index 58954d9..b7cb3c5 100644
--- a/apps/artemis/src/main/java/org/onosproject/artemis/impl/moas/MoasClientHandler.java
+++ b/apps/artemis/src/main/java/org/onosproject/artemis/impl/moas/MoasClientHandler.java
@@ -24,7 +24,6 @@
 import io.netty.channel.ChannelHandlerContext;
 import io.netty.channel.ChannelInboundHandlerAdapter;
 import io.netty.util.CharsetUtil;
-import org.apache.commons.lang.exception.ExceptionUtils;
 import org.onlab.packet.IpAddress;
 import org.onlab.packet.IpPrefix;
 import org.onosproject.artemis.ArtemisPacketProcessor;
@@ -69,8 +68,7 @@
             ByteBuf buffer = Unpooled.copiedBuffer(jsonInString, CharsetUtil.UTF_8);
             ctx.writeAndFlush(buffer);
         } catch (JsonProcessingException e) {
-            e.printStackTrace();
-            log.warn(ExceptionUtils.getFullStackTrace(e));
+            log.warn("channelActive()", e);
         }
     }
 
@@ -87,8 +85,7 @@
 
     @Override
     public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {
-        log.error(ExceptionUtils.getFullStackTrace(cause));
-        cause.printStackTrace();
+        log.error("exceptionCaught()", cause);
         ctx.close();
     }
 
diff --git a/apps/artemis/src/main/java/org/onosproject/artemis/impl/moas/MoasServerHandler.java b/apps/artemis/src/main/java/org/onosproject/artemis/impl/moas/MoasServerHandler.java
index d140416..6a6a0ab 100644
--- a/apps/artemis/src/main/java/org/onosproject/artemis/impl/moas/MoasServerHandler.java
+++ b/apps/artemis/src/main/java/org/onosproject/artemis/impl/moas/MoasServerHandler.java
@@ -22,7 +22,6 @@
 import io.netty.channel.ChannelHandler.Sharable;
 import io.netty.channel.ChannelHandlerContext;
 import io.netty.channel.ChannelInboundHandlerAdapter;
-import org.apache.commons.lang.exception.ExceptionUtils;
 import org.onlab.packet.IpAddress;
 import org.onosproject.artemis.impl.objects.ArtemisMessage;
 import org.slf4j.Logger;
@@ -77,8 +76,7 @@
 
     @Override
     public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {
-        log.error(ExceptionUtils.getFullStackTrace(cause));
-        cause.printStackTrace();
+        log.error("exceptionCaught()", cause);
         ctx.close();
     }
 
diff --git a/apps/artemis/src/main/java/org/onosproject/artemis/impl/monitors/ExaBgpMonitors.java b/apps/artemis/src/main/java/org/onosproject/artemis/impl/monitors/ExaBgpMonitors.java
index 5fb9be4..d645360 100644
--- a/apps/artemis/src/main/java/org/onosproject/artemis/impl/monitors/ExaBgpMonitors.java
+++ b/apps/artemis/src/main/java/org/onosproject/artemis/impl/monitors/ExaBgpMonitors.java
@@ -54,7 +54,7 @@
 
             socket.emit("exa_subscribe", parameters);
         } catch (JSONException e) {
-            e.printStackTrace();
+            log.warn("onConenct()", e);
         }
     }
 
@@ -88,7 +88,7 @@
                 packetProcessor.processMonitorPacket(message);
             }
         } catch (JSONException e) {
-            e.printStackTrace();
+            log.warn("onExaMessage()", e);
         }
     }
 
@@ -112,7 +112,7 @@
                 this.socket.on(Socket.EVENT_PING, args -> socket.emit("pong"));
                 this.socket.on("exa_message", this::onExaMessage);
             } catch (URISyntaxException e) {
-                e.printStackTrace();
+                log.warn("startMonitor()", e);
             }
             this.socket.connect();
         }
diff --git a/apps/artemis/src/main/java/org/onosproject/artemis/impl/monitors/RipeMonitors.java b/apps/artemis/src/main/java/org/onosproject/artemis/impl/monitors/RipeMonitors.java
index e848875..52025c9 100644
--- a/apps/artemis/src/main/java/org/onosproject/artemis/impl/monitors/RipeMonitors.java
+++ b/apps/artemis/src/main/java/org/onosproject/artemis/impl/monitors/RipeMonitors.java
@@ -17,7 +17,6 @@
 
 import io.socket.client.IO;
 import io.socket.client.Socket;
-import org.apache.commons.lang.exception.ExceptionUtils;
 import org.json.JSONException;
 import org.json.JSONObject;
 import org.onlab.packet.IpPrefix;
@@ -63,7 +62,7 @@
 
             socket.emit("ris_subscribe", parameters);
         } catch (JSONException e) {
-            e.printStackTrace();
+            log.warn("onConnect()", e);
         }
     }
 
@@ -110,8 +109,7 @@
                 packetProcessor.processMonitorPacket(message);
             }
         } catch (JSONException e) {
-            log.error(ExceptionUtils.getFullStackTrace(e));
-            e.printStackTrace();
+            log.error("onRisMessage()", e);
         }
         socket.emit("ping");
     }
@@ -129,8 +127,7 @@
                 this.socket.on(Socket.EVENT_PONG, args -> socket.emit("ping"));
                 this.socket.on("ris_message", this::onRisMessage);
             } catch (URISyntaxException e) {
-                log.error(ExceptionUtils.getFullStackTrace(e));
-                e.printStackTrace();
+                log.error("startMonitor()", e);
             }
 
             this.socket.connect();
