[ONOS-3528] Enable logging exception for SharedExecutorService

Change-Id: I612d5e844412b2ddca6b848e5f7aae5138999d3f
diff --git a/utils/misc/src/main/java/org/onlab/util/SharedExecutorService.java b/utils/misc/src/main/java/org/onlab/util/SharedExecutorService.java
index d3c4534..9b91a1a 100644
--- a/utils/misc/src/main/java/org/onlab/util/SharedExecutorService.java
+++ b/utils/misc/src/main/java/org/onlab/util/SharedExecutorService.java
@@ -15,6 +15,7 @@
  */
 package org.onlab.util;
 
+import com.codahale.metrics.Timer;
 import org.onlab.metrics.MetricsComponent;
 import org.onlab.metrics.MetricsFeature;
 import org.onlab.metrics.MetricsService;
@@ -27,8 +28,8 @@
 import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
-import com.codahale.metrics.Timer;
 
+import static org.slf4j.LoggerFactory.getLogger;
 
 
 /**
@@ -111,11 +112,11 @@
         return executor.submit(() -> {
                     T t = null;
                     long queueWaitTime = (long) taskCounter.duration();
-                    String className;
+                    Class className;
                     if (task instanceof  CallableExtended) {
-                        className =  ((CallableExtended) task).getRunnable().getClass().toString();
+                        className =  ((CallableExtended) task).getRunnable().getClass();
                     } else {
-                        className = task.getClass().toString();
+                        className = task.getClass();
                     }
                     if (queueMetrics != null) {
                         queueMetrics.update(queueWaitTime, TimeUnit.SECONDS);
@@ -123,7 +124,9 @@
                     taskCounter.reset();
                     try {
                         t = task.call();
-                    } catch (Exception e) { }
+                    } catch (Exception e) {
+                        getLogger(className).error("Uncaught exception on " + className, e);
+                    }
                     long taskwaittime = (long) taskCounter.duration();
                     if (delayMetrics != null) {
                         delayMetrics.update(taskwaittime, TimeUnit.SECONDS);