feature[ats_ATS331081]: Migrate logging to slf4j

This is the initial commit that adds the ote log bundles and has a
minimium set of converted logs.

Change-Id: Ia9b0fa30e5c47a80f5910618ef7b90370186d07b
diff --git a/org.eclipse.osee.client.ote.feature/feature.xml b/org.eclipse.osee.client.ote.feature/feature.xml
index 88ba84d..080f222 100644
--- a/org.eclipse.osee.client.ote.feature/feature.xml
+++ b/org.eclipse.osee.client.ote.feature/feature.xml
@@ -251,4 +251,19 @@
          version="0.0.0"
          unpack="false"/>
 
+   <plugin
+         id="org.eclipse.ote.logger"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.ote.logger.config"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         fragment="true"
+         unpack="false"/>
+
 </feature>
diff --git a/org.eclipse.osee.ote.core.test/src/org/eclipse/osee/ote/message/mock/UnitTestSupport.java b/org.eclipse.osee.ote.core.test/src/org/eclipse/osee/ote/message/mock/UnitTestSupport.java
index 8d7295f..1aba64d 100644
--- a/org.eclipse.osee.ote.core.test/src/org/eclipse/osee/ote/message/mock/UnitTestSupport.java
+++ b/org.eclipse.osee.ote.core.test/src/org/eclipse/osee/ote/message/mock/UnitTestSupport.java
@@ -26,7 +26,6 @@
 import org.eclipse.osee.ote.message.enums.DataType;
 import org.eclipse.osee.ote.message.listener.IOSEEMessageListener;
 import org.eclipse.ote.scheduler.OTETaskRegistration;
-import org.eclipse.ote.scheduler.SchedulerImpl;
 import org.junit.Assert;
 
 public class UnitTestSupport {
diff --git a/org.eclipse.osee.ote.core/META-INF/MANIFEST.MF b/org.eclipse.osee.ote.core/META-INF/MANIFEST.MF
index c71ecc6..a502181 100644
--- a/org.eclipse.osee.ote.core/META-INF/MANIFEST.MF
+++ b/org.eclipse.osee.ote.core/META-INF/MANIFEST.MF
@@ -98,6 +98,7 @@
  org.eclipse.osee.ote.messaging.dds.test,
  org.eclipse.osee.ote.messaging.dds.test.data,
  org.eclipse.osee.ote.properties,
+ org.eclipse.ote.logger,
  org.eclipse.ote.network,
  org.eclipse.ote.scheduler,
  org.osgi.service.event;version="1.3.0",
diff --git a/org.eclipse.osee.ote.core/src/org/eclipse/osee/ote/core/TestCase.java b/org.eclipse.osee.ote.core/src/org/eclipse/osee/ote/core/TestCase.java
index 6ee9613..8f3f942 100644
--- a/org.eclipse.osee.ote.core/src/org/eclipse/osee/ote/core/TestCase.java
+++ b/org.eclipse.osee.ote.core/src/org/eclipse/osee/ote/core/TestCase.java
@@ -40,7 +40,8 @@
 import org.eclipse.osee.ote.core.log.record.TestCaseRecord;
 import org.eclipse.osee.ote.core.log.record.TestDescriptionRecord;
 import org.eclipse.osee.ote.core.log.record.TestRecord;
-import org.eclipse.ote.scheduler.Scheduler;
+import org.eclipse.ote.logger.Log;
+import org.eclipse.ote.logger.OTELog;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 
@@ -97,6 +98,9 @@
  * @author Robert A. Fisher
  */
 public abstract class TestCase implements ITestEnvironmentAccessor, Xmlizable, XmlizableStream {
+   
+   Log log = OTELog.getLogger(TestCase.class.getName());
+   
    protected ITestLogger logger;
    private ITestEnvironmentAccessor environment;
    private final boolean standAlone;
@@ -325,8 +329,8 @@
       //This creates the test case outfile logging.
 
       environment.getTestScript().setTestCase(this);
-      OseeLog.logf(TestEnvironment.class, OteLevel.TEST_EVENT, "Starting Test Case %s.%s",
-         this.getTestScript().getClass().getSimpleName(), getName());
+
+      log.info("Starting Test Case %s.%s", this.getTestScript().getClass().getSimpleName(), getName());
       doTestCase(environment, environment.getLogger());
    }
 
diff --git a/org.eclipse.osee.ote.core/src/org/eclipse/osee/ote/core/framework/BaseRunManager.java b/org.eclipse.osee.ote.core/src/org/eclipse/osee/ote/core/framework/BaseRunManager.java
index f9b3635..9de8f1a 100644
--- a/org.eclipse.osee.ote.core/src/org/eclipse/osee/ote/core/framework/BaseRunManager.java
+++ b/org.eclipse.osee.ote.core/src/org/eclipse/osee/ote/core/framework/BaseRunManager.java
@@ -21,9 +21,13 @@
 import org.eclipse.osee.ote.core.framework.testrun.ITestResultCollector;
 import org.eclipse.osee.ote.core.framework.testrun.ITestResultCollectorFactory;
 import org.eclipse.osee.ote.core.framework.testrun.ITestRunManager;
+import org.eclipse.ote.logger.Log;
+import org.eclipse.ote.logger.OTELog;
 
 public class BaseRunManager implements IRunManager {
 
+   Log log = OTELog.getLogger("org.eclipse.osee.ote.core.framework");
+   
    private final ITestRunManager testRunManager;
    private final ITestLifecycleListenerProvider lifecycleListenerProvider;
    private final ITestResultCollectorFactory resultCollectorFactory;
diff --git a/org.eclipse.osee.ote.core/src/org/eclipse/osee/ote/core/framework/ResultBuilder.java b/org.eclipse.osee.ote.core/src/org/eclipse/osee/ote/core/framework/ResultBuilder.java
index 5012056..34c0da9 100644
--- a/org.eclipse.osee.ote.core/src/org/eclipse/osee/ote/core/framework/ResultBuilder.java
+++ b/org.eclipse.osee.ote.core/src/org/eclipse/osee/ote/core/framework/ResultBuilder.java
@@ -11,12 +11,16 @@
 package org.eclipse.osee.ote.core.framework;
 
 import org.eclipse.osee.framework.logging.OseeLog;
+import org.eclipse.ote.logger.Log;
+import org.eclipse.ote.logger.OTELog;
 
 /**
  * @author Andrew M. Finkbeiner
  */
 public class ResultBuilder {
 
+   Log log = OTELog.getLogger("org.eclipse.osee.ote.core.framework");
+   
    private final MethodResultImpl result;
    private final boolean logToHM;
 
diff --git a/org.eclipse.osee.ote.core/src/org/eclipse/osee/ote/core/framework/command/BatchLog.java b/org.eclipse.osee.ote.core/src/org/eclipse/osee/ote/core/framework/command/BatchLog.java
index 25635ec..a7e10b0 100644
--- a/org.eclipse.osee.ote.core/src/org/eclipse/osee/ote/core/framework/command/BatchLog.java
+++ b/org.eclipse.osee.ote.core/src/org/eclipse/osee/ote/core/framework/command/BatchLog.java
@@ -9,9 +9,13 @@
 
 import org.eclipse.osee.framework.logging.ILoggerListener;
 import org.eclipse.osee.framework.logging.OseeLog;
+import org.eclipse.ote.logger.Log;
+import org.eclipse.ote.logger.OTELog;
 
 public class BatchLog implements ILoggerListener {
    
+   Log log = OTELog.getLogger("org.eclipse.osee.ote.core.framework");
+   
    private File fileToWriteTo;
    private FileOutputStream fos;
    private PrintWriter out;
diff --git a/org.eclipse.osee.ote.core/src/org/eclipse/osee/ote/core/framework/command/RunTests.java b/org.eclipse.osee.ote.core/src/org/eclipse/osee/ote/core/framework/command/RunTests.java
index 751ffb5..2e8a010 100644
--- a/org.eclipse.osee.ote.core/src/org/eclipse/osee/ote/core/framework/command/RunTests.java
+++ b/org.eclipse.osee.ote.core/src/org/eclipse/osee/ote/core/framework/command/RunTests.java
@@ -10,12 +10,10 @@
 import java.util.Set;
 import java.util.UUID;
 import java.util.concurrent.Future;
-import java.util.logging.Level;
 
 import org.eclipse.osee.framework.jdk.core.type.IPropertyStore;
 import org.eclipse.osee.framework.jdk.core.util.Lib;
 import org.eclipse.osee.framework.logging.IHealthStatus;
-import org.eclipse.osee.framework.logging.OseeLog;
 import org.eclipse.osee.ote.Configuration;
 import org.eclipse.osee.ote.OTEApi;
 import org.eclipse.osee.ote.core.ServiceUtility;
@@ -27,9 +25,13 @@
 import org.eclipse.osee.ote.core.framework.saxparse.ProcessOutfileOverview;
 import org.eclipse.osee.ote.io.OTEServerFolder;
 import org.eclipse.osee.ote.message.IMessageTestContext;
+import org.eclipse.ote.logger.Log;
+import org.eclipse.ote.logger.OTELog;
 
 public class RunTests implements ITestServerCommand, Serializable {
 
+   Log log = OTELog.getLogger("org.eclipse.osee.ote.core.framework");
+   
    private static final long serialVersionUID = 7408758537342855854L;
    private static final String DEVELOPMENT = "Development";
    
@@ -174,7 +176,7 @@
       try {
          Lib.writeStringToFile(sb.toString(), batchRunList);
       } catch (IOException ex) {
-         OseeLog.log(getClass(), Level.SEVERE, "Failed to write batch run list", ex);
+         log.error(ex, "Failed to write batch run list");
       }
    }
 
@@ -182,7 +184,7 @@
       try {
          Lib.writeStringToFile(string, batchStatusFile);
       } catch (IOException ex) {
-         OseeLog.log(getClass(), Level.SEVERE, "Failed to write batch status", ex);
+         log.error(ex, "Failed to write batch status");
       }
    }
 
@@ -195,7 +197,7 @@
       try {
          Lib.writeStringToFile(summary, file);
       } catch (IOException ex) {
-         OseeLog.log(getClass(), Level.SEVERE, "Failed to write outfile summary", ex);
+         log.error(ex, "Failed to write outfile summary");
       }
    }
 
@@ -206,13 +208,13 @@
          fis = new FileInputStream(outfile);
          overview.run(fis);
       } catch (Exception ex) {
-         OseeLog.log(getClass(), Level.SEVERE, "Failed to write outfile summary", ex);
+         log.error(ex, "Failed to write outfile summary");
       } finally {
          if(fis != null){
             try {
                fis.close();
             } catch (IOException e) {
-               OseeLog.log(getClass(), Level.SEVERE, "Failed to close outfile", e);
+               log.error(e, "Failed to close outfile");
             }
          }
       }
diff --git a/org.eclipse.osee.ote.core/src/org/eclipse/osee/ote/core/framework/command/TestCallableWrapper.java b/org.eclipse.osee.ote.core/src/org/eclipse/osee/ote/core/framework/command/TestCallableWrapper.java
index 70ca276..d1458a9 100644
--- a/org.eclipse.osee.ote.core/src/org/eclipse/osee/ote/core/framework/command/TestCallableWrapper.java
+++ b/org.eclipse.osee.ote.core/src/org/eclipse/osee/ote/core/framework/command/TestCallableWrapper.java
@@ -17,9 +17,13 @@
 import org.eclipse.osee.ote.core.OTESessionManager;
 import org.eclipse.osee.ote.core.environment.TestEnvironment;
 import org.eclipse.osee.ote.core.environment.status.OTEStatusBoard;
+import org.eclipse.ote.logger.Log;
+import org.eclipse.ote.logger.OTELog;
 
 public class TestCallableWrapper implements Callable<ITestCommandResult> {
 
+   Log log = OTELog.getLogger("org.eclipse.osee.ote.core.framework");
+   
    private final ITestServerCommand cmd;
    private final TestEnvironment context;
    private final BaseCommandManager cmdManager;
diff --git a/org.eclipse.osee.ote.core/src/org/eclipse/osee/ote/core/framework/prompt/AbstractInteractivePrompt.java b/org.eclipse.osee.ote.core/src/org/eclipse/osee/ote/core/framework/prompt/AbstractInteractivePrompt.java
index e6d7dbb..ffe0809 100644
--- a/org.eclipse.osee.ote.core/src/org/eclipse/osee/ote/core/framework/prompt/AbstractInteractivePrompt.java
+++ b/org.eclipse.osee.ote.core/src/org/eclipse/osee/ote/core/framework/prompt/AbstractInteractivePrompt.java
@@ -17,12 +17,16 @@
 import org.eclipse.osee.framework.logging.OseeLog;
 import org.eclipse.osee.ote.core.TestScript;
 import org.eclipse.osee.ote.core.environment.TestEnvironment;
+import org.eclipse.ote.logger.Log;
+import org.eclipse.ote.logger.OTELog;
 
 /**
  * @author Ken J. Aguilar
  */
 public abstract class AbstractInteractivePrompt<T> extends AbstractRemotePrompt implements IPromptHandle {
 
+   Log log = OTELog.getLogger("org.eclipse.osee.ote.core.framework");
+   
    private final TestScript script;
    protected Exception exception;
    protected T response;
diff --git a/org.eclipse.osee.ote.core/src/org/eclipse/osee/ote/core/framework/saxparse/ProcessOutfileOverview.java b/org.eclipse.osee.ote.core/src/org/eclipse/osee/ote/core/framework/saxparse/ProcessOutfileOverview.java
index f47eb01..0a75173 100644
--- a/org.eclipse.osee.ote.core/src/org/eclipse/osee/ote/core/framework/saxparse/ProcessOutfileOverview.java
+++ b/org.eclipse.osee.ote.core/src/org/eclipse/osee/ote/core/framework/saxparse/ProcessOutfileOverview.java
@@ -11,11 +11,11 @@
 package org.eclipse.osee.ote.core.framework.saxparse;
 
 import java.io.InputStream;
-import java.util.logging.Level;
 
-import org.eclipse.osee.framework.logging.OseeLog;
 import org.eclipse.osee.ote.core.framework.saxparse.elements.TestPointResultsData;
 import org.eclipse.osee.ote.core.framework.saxparse.elements.TimeSummaryData;
+import org.eclipse.ote.logger.Log;
+import org.eclipse.ote.logger.OTELog;
 import org.xml.sax.InputSource;
 import org.xml.sax.XMLReader;
 import org.xml.sax.helpers.XMLReaderFactory;
@@ -24,6 +24,8 @@
  * @author Andrew M. Finkbeiner
  */
 public class ProcessOutfileOverview {
+   
+   Log log = OTELog.getLogger("org.eclipse.osee.ote.core.framework");
 
    private String elapsedTime;
    private String scriptName;
@@ -108,7 +110,7 @@
     
       long all = System.currentTimeMillis() - time;
 
-      OseeLog.logf(getClass(), Level.INFO, "It took %d ms total to process.", all);
+      log.info("It took %d ms total to process.", all);
    }
 
    public String getElapsedTime() {
diff --git a/org.eclipse.osee.ote.core/src/org/eclipse/osee/ote/core/framework/testrun/BaseTestRunManager.java b/org.eclipse.osee.ote.core/src/org/eclipse/osee/ote/core/framework/testrun/BaseTestRunManager.java
index c567629..2814e5d 100644
--- a/org.eclipse.osee.ote.core/src/org/eclipse/osee/ote/core/framework/testrun/BaseTestRunManager.java
+++ b/org.eclipse.osee.ote.core/src/org/eclipse/osee/ote/core/framework/testrun/BaseTestRunManager.java
@@ -21,9 +21,13 @@
 import org.eclipse.osee.ote.core.framework.MethodResultImpl;
 import org.eclipse.osee.ote.core.framework.ReturnCode;
 import org.eclipse.osee.ote.core.internal.Activator;
+import org.eclipse.ote.logger.Log;
+import org.eclipse.ote.logger.OTELog;
 
 public class BaseTestRunManager implements ITestRunManager {
 
+   Log log = OTELog.getLogger("org.eclipse.osee.ote.core.framework");
+   
    private final ITestFactory testFactory;
    private final ITestRunListenerProviderFactory testRunListenerProviderFactory;
 
diff --git a/org.eclipse.osee.ote.core/src/org/eclipse/osee/ote/core/framework/testrun/TestRunThread.java b/org.eclipse.osee.ote.core/src/org/eclipse/osee/ote/core/framework/testrun/TestRunThread.java
index 052874c..a56e6ec 100644
--- a/org.eclipse.osee.ote.core/src/org/eclipse/osee/ote/core/framework/testrun/TestRunThread.java
+++ b/org.eclipse.osee.ote.core/src/org/eclipse/osee/ote/core/framework/testrun/TestRunThread.java
@@ -27,10 +27,14 @@
 import org.eclipse.osee.ote.core.framework.ReturnCode;
 import org.eclipse.osee.ote.core.internal.Activator;
 import org.eclipse.osee.ote.properties.OtePropertiesCore;
+import org.eclipse.ote.logger.Log;
+import org.eclipse.ote.logger.OTELog;
 import org.eclipse.ote.scheduler.Scheduler;
 
 public class TestRunThread extends OseeTestThread {
 
+   Log log = OTELog.getLogger("org.eclipse.osee.ote.core.framework");
+   
    private final TestScript test;
    private final ITestRunListenerProvider listenerProvider;
    private final ITestRunListenerDataProvider dataProvider;
diff --git a/org.eclipse.osee.ote.core/src/org/eclipse/osee/ote/core/log/TestLogger.java b/org.eclipse.osee.ote.core/src/org/eclipse/osee/ote/core/log/TestLogger.java
index 6aa2131..b026174 100644
--- a/org.eclipse.osee.ote.core/src/org/eclipse/osee/ote/core/log/TestLogger.java
+++ b/org.eclipse.osee.ote.core/src/org/eclipse/osee/ote/core/log/TestLogger.java
@@ -297,4 +297,6 @@
       }
       log(record);
    }
+
+ 
 }
\ No newline at end of file
diff --git a/org.eclipse.osee.ote.parent/pom.xml b/org.eclipse.osee.ote.parent/pom.xml
index b5becfc..6181fea 100644
--- a/org.eclipse.osee.ote.parent/pom.xml
+++ b/org.eclipse.osee.ote.parent/pom.xml
@@ -35,6 +35,8 @@
 		<module>../org.eclipse.osee.ote.core.test</module>
 		<module>../org.eclipse.osee.ote.jms</module>
 		<module>../org.eclipse.osee.ote.messaging.dds</module>
+		<module>../org.eclipse.ote.logger</module>
+		<module>../org.eclipse.ote.logger.config</module>
 		<module>../org.eclipse.osee.ote.runtimeManager</module>
 		<module>../org.eclipse.osee.ote.server</module>
 		<module>../org.eclipse.osee.ote.ui</module>
diff --git a/org.eclipse.osee.ote.server/META-INF/MANIFEST.MF b/org.eclipse.osee.ote.server/META-INF/MANIFEST.MF
index 98df1b0..1f1bd71 100644
--- a/org.eclipse.osee.ote.server/META-INF/MANIFEST.MF
+++ b/org.eclipse.osee.ote.server/META-INF/MANIFEST.MF
@@ -36,6 +36,7 @@
  org.eclipse.osee.ote.message.instrumentation,
  org.eclipse.osee.ote.message.interfaces,
  org.eclipse.osee.ote.properties,
+ org.eclipse.ote.logger,
  org.eclipse.ote.network,
  org.osgi.framework,
  org.osgi.service.packageadmin,
diff --git a/org.eclipse.osee.ote.server/src/org/eclipse/osee/ote/server/internal/OteService.java b/org.eclipse.osee.ote.server/src/org/eclipse/osee/ote/server/internal/OteService.java
index 4ce4938..36acbc6 100644
--- a/org.eclipse.osee.ote.server/src/org/eclipse/osee/ote/server/internal/OteService.java
+++ b/org.eclipse.osee.ote.server/src/org/eclipse/osee/ote/server/internal/OteService.java
@@ -24,7 +24,6 @@
 import java.util.logging.Level;
 
 import org.eclipse.osee.framework.jdk.core.util.EnhancedProperties;
-import org.eclipse.osee.framework.logging.OseeLog;
 import org.eclipse.osee.ote.HostServerProperties;
 import org.eclipse.osee.ote.core.ConnectionRequestResult;
 import org.eclipse.osee.ote.core.IRemoteUserSession;
@@ -42,6 +41,8 @@
 import org.eclipse.osee.ote.message.MessageSystemTestEnvironment;
 import org.eclipse.osee.ote.properties.OtePropertiesCore;
 import org.eclipse.osee.ote.server.PropertyParamter;
+import org.eclipse.ote.logger.Log;
+import org.eclipse.ote.logger.OTELog;
 
 import net.jini.core.lookup.ServiceID;
 import net.jini.id.Uuid;
@@ -49,6 +50,8 @@
 
 public class OteService implements IHostTestEnvironment {
 
+   private Log log = OTELog.getLogger(OteService.class.getName());
+   
    private final ServiceID serviceID;
    private final EnhancedProperties enhancedProperties;
    private MessageSystemTestEnvironment currentEnvironment;
@@ -94,7 +97,7 @@
          }
          enhancedProperties.setProperty(HostServerProperties.oteUdpEndpoint.name(), format);
       } catch (Exception e) {
-         OseeLog.log(OteService.class, Level.SEVERE, "Failed to set the appServerURI", e);
+         log.error(e, "Failed to set the appServerURI");
       }
       
       OTEServerFolder service = ServiceUtility.getService(OTEServerFolder.class);
@@ -109,7 +112,7 @@
                      serverProperties.put(entry.getKey(), entry.getValue());
                   } else {
                      serverProperties.put(entry.getKey(), entry.getValue().toString());
-                     OseeLog.logf(getClass(), Level.WARNING, "key[%s] has non string value [%s][%s]", entry.getKey(), entry.getValue().getClass(), entry.getValue().toString());
+                     log.warn("key[%s] has non string value [%s][%s]", entry.getKey(), entry.getValue().getClass(), entry.getValue().toString());
                   }
                }
                serverProperties.store(new FileOutputStream(new File(dir, "server.properties")), "");
@@ -136,8 +139,7 @@
    @Override
    public ConnectionRequestResult requestEnvironment(IRemoteUserSession session, UUID sessionId, TestEnvironmentConfig config) throws RemoteException {
       try {
-         OseeLog.log(OteService.class, Level.INFO,
-            "received request for test environment from user " + session.getUser().getName());
+         log.info("received request for test environment from user %s", session.getUser().getName());
          if (!isEnvironmentAvailable()) {
             createEnvironment();
          }
@@ -146,8 +148,7 @@
          updateDynamicInfo();
          return new ConnectionRequestResult(remoteEnvironment, sessionId, new ReturnStatus("Success", true));
       } catch (Throwable ex) {
-         OseeLog.log(OteService.class, Level.SEVERE,
-            "Exception while requesting environment for user " + session.getUser().getName(), ex);
+         log.error(ex, "Exception while requesting environment for user %s",  session.getUser().getName());
          throw new RemoteException("Exception while requesting environment for user ", ex);
       }
    }
@@ -171,7 +172,7 @@
             try {
                userList.add(session.getUser());
             } catch (Exception e) {
-               OseeLog.log(OteService.class, Level.WARNING, e);
+               log.warn(e, e.getMessage());
             }
          }
       }
diff --git a/org.eclipse.osee.ote.server/src/org/eclipse/osee/ote/server/internal/OteServiceStarterImpl.java b/org.eclipse.osee.ote.server/src/org/eclipse/osee/ote/server/internal/OteServiceStarterImpl.java
index db362c4..29059da 100644
--- a/org.eclipse.osee.ote.server/src/org/eclipse/osee/ote/server/internal/OteServiceStarterImpl.java
+++ b/org.eclipse.osee.ote.server/src/org/eclipse/osee/ote/server/internal/OteServiceStarterImpl.java
@@ -21,13 +21,11 @@
 import java.util.concurrent.ThreadFactory;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
-import java.util.logging.Level;
 
 import org.apache.activemq.broker.BrokerService;
 import org.eclipse.osee.connection.service.IConnectionService;
 import org.eclipse.osee.connection.service.IServiceConnector;
 import org.eclipse.osee.framework.jdk.core.type.OseeStateException;
-import org.eclipse.osee.framework.logging.OseeLog;
 import org.eclipse.osee.ote.core.OTESessionManager;
 import org.eclipse.osee.ote.core.ServiceUtility;
 import org.eclipse.osee.ote.core.environment.interfaces.IHostTestEnvironment;
@@ -41,6 +39,8 @@
 import org.eclipse.osee.ote.server.OteServiceStarter;
 import org.eclipse.osee.ote.server.PropertyParamter;
 import org.eclipse.osee.ote.server.TestEnvironmentFactory;
+import org.eclipse.ote.logger.Log;
+import org.eclipse.ote.logger.OTELog;
 import org.osgi.framework.FrameworkUtil;
 
 /**
@@ -48,6 +48,8 @@
  */
 public class OteServiceStarterImpl implements OteServiceStarter {
    
+   private static Log log = OTELog.getLogger(OteServiceStarterImpl.class.getName());
+   
 	private IRuntimeLibraryManager runtimeLibraryManager;
 	private IConnectionService connectionService;
 
@@ -161,17 +163,17 @@
 			      lookupRegistration = new LookupRegistration(masterURI, masterServer, oteServerEntry, service);
 			      taskToCancel = executor.scheduleWithFixedDelay(lookupRegistration, 0, 30, TimeUnit.SECONDS);
 			   } catch(Throwable th){
-			      OseeLog.log(getClass(), Level.SEVERE, th);
+			      log.error(th,  th.getMessage());
 			   }
 			} else {
-				OseeLog.log(getClass(), Level.WARNING, "'ote.master.uri' was not set.  You must use direct connect from the client.");
+			   log.warn("'ote.master.uri' was not set.  You must use direct connect from the client.");
 			}
 			
 		} else {
 		}
 		
 		FrameworkUtil.getBundle(getClass()).getBundleContext().registerService(IHostTestEnvironment.class, service, null);
-		System.out.printf("TEST SERVER INITIALIZATION COMPLETE\n");
+		log.info("TEST SERVER INITIALIZATION COMPLETE");
 
 		return service;
 	}
@@ -199,7 +201,7 @@
 				service.kill();
 				service = null;
 			} catch (Exception ex) {
-				OseeLog.log(getClass(), Level.SEVERE, ex);
+			   log.error(ex, ex.getMessage());
 			}
 		}
 		if (brokerService != null) {
@@ -207,14 +209,14 @@
 				brokerService.stopGracefully(".*", ".*", 10000, 500);
 				brokerService.stop();
 			} catch (Exception ex) {
-				OseeLog.log(getClass(), Level.SEVERE, ex);
+			   log.error(ex, ex.getMessage());
 			}
 		}
 		if (serviceSideConnector != null) {
 			try {
 				connectionService.removeConnector(serviceSideConnector);
 			} catch (Exception ex) {
-				OseeLog.log(getClass(), Level.SEVERE, ex);
+			   log.error(ex, ex.getMessage());
 			}
 		}
 		if(oteServerEntry != null) {
@@ -225,12 +227,12 @@
 		      Future<OTEMasterServerResult> removeServer = masterServer.removeServer(masterURI, oteServerEntry);
 		      try {
                removeServer.get(1000, TimeUnit.MILLISECONDS);
-            } catch (InterruptedException e) {
-               OseeLog.log(getClass(), Level.INFO, e);
-            } catch (ExecutionException e) {
-               OseeLog.log(getClass(), Level.INFO, e);
-            } catch (TimeoutException e) {
-               OseeLog.log(getClass(), Level.INFO, e);
+            } catch (InterruptedException ex) {
+               log.error(ex, ex.getMessage());
+            } catch (ExecutionException ex) {
+               log.error(ex, ex.getMessage());
+            } catch (TimeoutException ex) {
+               log.error(ex, ex.getMessage());
             }
 		   }
 		}
@@ -268,7 +270,7 @@
                }
             }
          } catch (Throwable th){
-            th.printStackTrace();
+            log.error(th, th.getMessage());
          }
       }
       
diff --git a/org.eclipse.ote.logger.slf4j/.classpath b/org.eclipse.ote.logger.config/.classpath
similarity index 77%
rename from org.eclipse.ote.logger.slf4j/.classpath
rename to org.eclipse.ote.logger.config/.classpath
index 1fa3e68..eca7bdb 100644
--- a/org.eclipse.ote.logger.slf4j/.classpath
+++ b/org.eclipse.ote.logger.config/.classpath
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
 	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
 	<classpathentry kind="src" path="src"/>
 	<classpathentry kind="output" path="bin"/>
diff --git a/org.eclipse.ote.logger.slf4j/.project b/org.eclipse.ote.logger.config/.project
similarity index 79%
rename from org.eclipse.ote.logger.slf4j/.project
rename to org.eclipse.ote.logger.config/.project
index d125cd1..04bf381 100644
--- a/org.eclipse.ote.logger.slf4j/.project
+++ b/org.eclipse.ote.logger.config/.project
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <projectDescription>
-	<name>org.eclipse.ote.logger.slf4j</name>
+	<name>org.eclipse.ote.logger.config</name>
 	<comment></comment>
 	<projects>
 	</projects>
@@ -20,11 +20,6 @@
 			<arguments>
 			</arguments>
 		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ds.core.builder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
 	</buildSpec>
 	<natures>
 		<nature>org.eclipse.pde.PluginNature</nature>
diff --git a/org.eclipse.ote.logger.config/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.ote.logger.config/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/org.eclipse.ote.logger.config/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/org.eclipse.ote.logger.config/META-INF/MANIFEST.MF b/org.eclipse.ote.logger.config/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..735f952
--- /dev/null
+++ b/org.eclipse.ote.logger.config/META-INF/MANIFEST.MF
@@ -0,0 +1,7 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Filter
+Bundle-SymbolicName: org.eclipse.ote.logger.config
+Bundle-Version: 0.24.3.qualifier
+Fragment-Host: ch.qos.logback.classic
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
diff --git a/org.eclipse.ote.logger.slf4j/build.properties b/org.eclipse.ote.logger.config/build.properties
similarity index 70%
rename from org.eclipse.ote.logger.slf4j/build.properties
rename to org.eclipse.ote.logger.config/build.properties
index 6210e84..fc1b21f 100644
--- a/org.eclipse.ote.logger.slf4j/build.properties
+++ b/org.eclipse.ote.logger.config/build.properties
@@ -1,5 +1,5 @@
+source.. = src/
 output.. = bin/
 bin.includes = META-INF/,\
                .,\
-               OSGI-INF/
-source.. = src/
+               logback-test.xml
diff --git a/org.eclipse.ote.logger.config/logback-test.xml b/org.eclipse.ote.logger.config/logback-test.xml
new file mode 100644
index 0000000..813b32a
--- /dev/null
+++ b/org.eclipse.ote.logger.config/logback-test.xml
@@ -0,0 +1,48 @@
+<configuration scan="false" debug="true">
+	<!-- See documentation at http://logback.qos.ch/manual/joran.html -->
+	<contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator">
+		<resetJUL>true</resetJUL>
+	</contextListener>
+
+	<timestamp key="bySecond" datePattern="yyyyMMdd'T'HHmmss" />
+
+	<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+		<!-- encoders are assigned the type ch.qos.logback.classic.encoder.PatternLayoutEncoder 
+			by default -->
+		<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+			<level>INFO</level>
+		</filter>
+		<filter class="ch.qos.logback.classic.filter.OsgiLogServiceFilter">
+			<Level>INFO</Level>
+			<ThreadRegex>(Osgi Log Service)|(OTE Master Client.*)|(Start Level:.*)|(Framework stop.*)</ThreadRegex>
+		</filter>
+
+		<encoder>
+			<pattern>%-50(%d{yyyy-MM-dd HH:mm:ss.SSS} [%-32.32logger{32}] %-5.-5level) - %msg%n</pattern>
+			<outputPatternAsHeader>false</outputPatternAsHeader>
+		</encoder>
+	</appender>
+
+<!-- 
+	<appender name="FILE" class="ch.qos.logback.core.FileAppender">
+		<file>${user.home}/OTESERVER/${HOSTNAME}/servers/ote${bySecond}.log</file>
+		<filter class="ch.qos.logback.classic.filter.OsgiLogServiceFilter">
+			<Level>INFO</Level>
+			<ThreadRegex>(Osgi Log Service)|(OTE Master Client.*)|(Start Level:.*)|(Framework stop.*)</ThreadRegex>
+		</filter>
+		<encoder>
+			<pattern>%-50(%d{yyyy-MM-dd HH:mm:ss.SSS} [%-18.-18thread][%-32.32logger{32}] %-5.-5level) - %msg%n</pattern>
+		</encoder>
+	</appender>
+ -->
+	<!-- ANY LOGGERS THAT WE DON'T CARE ABOUT CAN BE DONE LIKE THIS -->
+	<logger name="org.eclipse.jetty" level="WARN" />
+	<logger name="org.apache.aries.blueprint" level="WARN" />
+
+	<!-- DEFAULT IS DEBUG -->
+	<root level="DEBUG">
+		<appender-ref ref="STDOUT" />
+	<!-- 	<appender-ref ref="FILE" />  -->
+	</root>
+
+</configuration>
\ No newline at end of file
diff --git a/org.eclipse.ote.logger.slf4j/pom.xml b/org.eclipse.ote.logger.config/pom.xml
similarity index 80%
rename from org.eclipse.ote.logger.slf4j/pom.xml
rename to org.eclipse.ote.logger.config/pom.xml
index ddc1bb7..cb56b45 100644
--- a/org.eclipse.ote.logger.slf4j/pom.xml
+++ b/org.eclipse.ote.logger.config/pom.xml
@@ -3,15 +3,16 @@
 
 	<modelVersion>4.0.0</modelVersion>
 
-	<parent>
+    <parent>
 		<groupId>org.eclipse.osee</groupId>
 		<artifactId>org.eclipse.osee.ote.parent</artifactId>
 		<version>0.24.3-SNAPSHOT</version>
 		<relativePath>../org.eclipse.osee.ote.parent</relativePath>
 	</parent>
 
-	<artifactId>org.eclipse.ote.logger.slf4j</artifactId>
+
+	<artifactId>org.eclipse.ote.logger.config</artifactId>
 	<packaging>eclipse-plugin</packaging>
-	<name>OTE Logger SLF4J - (Incubation)</name>
+	<name>OTE Logger Config - (Incubation)</name>
 
 </project>
diff --git a/org.eclipse.ote.logger.config/src/ch/qos/logback/classic/filter/OsgiLogServiceFilter.java b/org.eclipse.ote.logger.config/src/ch/qos/logback/classic/filter/OsgiLogServiceFilter.java
new file mode 100644
index 0000000..ff3c4a4
--- /dev/null
+++ b/org.eclipse.ote.logger.config/src/ch/qos/logback/classic/filter/OsgiLogServiceFilter.java
@@ -0,0 +1,41 @@
+package ch.qos.logback.classic.filter;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import ch.qos.logback.classic.Level;
+import ch.qos.logback.classic.spi.ILoggingEvent;
+import ch.qos.logback.core.filter.Filter;
+import ch.qos.logback.core.spi.FilterReply;
+
+public class OsgiLogServiceFilter extends Filter<ILoggingEvent> {
+
+   private int levelInt;
+   private Matcher matcher;
+
+   @Override
+   public FilterReply decide(ILoggingEvent event) {    
+     
+     if (event.getLevel().levelInt <= levelInt){
+        matcher.reset(event.getThreadName());
+        if(matcher.matches()){
+           return FilterReply.DENY;
+        } 
+     }
+     return FilterReply.NEUTRAL;
+   }
+   
+   public void setLevel(String level){
+      try{
+         this.levelInt = Integer.parseInt(level);
+      } catch(NumberFormatException ex){
+         this.levelInt = Level.toLevel(level).levelInt;
+      }
+   }
+   
+   public void setThreadRegex(String regex){
+      this.matcher = Pattern.compile(regex).matcher("");
+   }
+ 
+
+}
diff --git a/org.eclipse.ote.logger.slf4j/META-INF/MANIFEST.MF b/org.eclipse.ote.logger.slf4j/META-INF/MANIFEST.MF
deleted file mode 100644
index f8765d3..0000000
--- a/org.eclipse.ote.logger.slf4j/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,17 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Osee Logger Slf4j (Incubation)
-Bundle-SymbolicName: org.eclipse.ote.logger.slf4j
-Bundle-Version: 0.24.3.qualifier
-Import-Package: ch.qos.logback.core;version="1.0.7",
- ch.qos.logback.core.spi;version="1.0.7",
- org.eclipse.osee.framework.jdk.core.util,
- org.eclipse.ote.logger,
- org.osgi.framework,
- org.osgi.service.component,
- org.osgi.service.log,
- org.slf4j
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Service-Component: OSGI-INF/*.xml
-Bundle-Vendor: Eclipse Open System Engineering Environment
-Bundle-ActivationPolicy: lazy
diff --git a/org.eclipse.ote.logger.slf4j/OSGI-INF/log.impl.provider.xml b/org.eclipse.ote.logger.slf4j/OSGI-INF/log.impl.provider.xml
deleted file mode 100644
index 74462bd..0000000
--- a/org.eclipse.ote.logger.slf4j/OSGI-INF/log.impl.provider.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" activate="start" deactivate="stop" immediate="false" name="org.eclipse.ote.logger.slf4j.internal.Sfl4jLogImpl">
-   <implementation class="org.eclipse.ote.logger.slf4j.internal.Sfl4jLogImpl"/>
-   <service>
-      <provide interface="org.eclipse.ote.logger.Log"/>
-   </service>
- 
-</scr:component>
diff --git a/org.eclipse.ote.logger.slf4j/OSGI-INF/log.ote.listener.xml b/org.eclipse.ote.logger.slf4j/OSGI-INF/log.ote.listener.xml
deleted file mode 100644
index 7a5ce47..0000000
--- a/org.eclipse.ote.logger.slf4j/OSGI-INF/log.ote.listener.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" activate="start" deactivate="stop" immediate="true" name="org.eclipse.ote.logger.slf4j.listener">
-   <implementation class="org.eclipse.ote.logger.slf4j.internal.OTEAppender"/>
-   <service>
-      <provide interface="org.eclipse.ote.logger.OTELogListener"/>
-   </service>
-</scr:component>
diff --git a/org.eclipse.ote.logger.slf4j/OSGI-INF/log.service.reader.xml b/org.eclipse.ote.logger.slf4j/OSGI-INF/log.service.reader.xml
deleted file mode 100644
index 5a89a75..0000000
--- a/org.eclipse.ote.logger.slf4j/OSGI-INF/log.service.reader.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" enabled="true" immediate="true" name="org.eclipse.ote.logger.slf4j.internal.OsgiSlf4jLogger">
-   <implementation class="org.eclipse.ote.logger.slf4j.internal.OsgiSlf4jLogger"/>
-
-   <reference bind="setLoggingService" 
-   cardinality="1..1" 
-   interface="org.osgi.service.log.LogReaderService" 
-   name="LogReaderService" 
-   policy="static" 
-   target="(objectClass=org.osgi.service.log.LogReaderService)"/>
-    
-    
-</scr:component>
diff --git a/org.eclipse.ote.logger.slf4j/src/org/eclipse/ote/logger/slf4j/internal/OTEAppender.java b/org.eclipse.ote.logger.slf4j/src/org/eclipse/ote/logger/slf4j/internal/OTEAppender.java
deleted file mode 100644
index 28505aa..0000000
--- a/org.eclipse.ote.logger.slf4j/src/org/eclipse/ote/logger/slf4j/internal/OTEAppender.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package org.eclipse.ote.logger.slf4j.internal;
-
-import org.eclipse.ote.logger.OTELogControl;
-import org.eclipse.ote.logger.OTELogListener;
-import org.slf4j.LoggerFactory;
-
-import ch.qos.logback.core.AppenderBase;
-import ch.qos.logback.core.Context;
-
-public class OTEAppender extends AppenderBase implements OTELogControl {
-
-   /**
-    * OSGI
-    */
-   public void start(){
-      if(LoggerFactory.getILoggerFactory() instanceof Context){
-         this.setContext((Context)LoggerFactory.getILoggerFactory());
-      }
-   }
-   
-   /**
-    * OSGI
-    */
-   public void stop(){
-      
-   }
-   
-   @Override
-   protected void append(Object arg0) {
-      
-   }
-
-   @Override
-   public void addListener(OTELogListener listener) {
-      
-   }
-
-   @Override
-   public void removeListener(OTELogListener listener) {
-      
-   }
-
-   @Override
-   public void clear() {
-      
-   }
-
-}
diff --git a/org.eclipse.ote.logger/.project b/org.eclipse.ote.logger/.project
index 4ee1948..38c4d78 100644
--- a/org.eclipse.ote.logger/.project
+++ b/org.eclipse.ote.logger/.project
@@ -20,6 +20,11 @@
 			<arguments>
 			</arguments>
 		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ds.core.builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
 	</buildSpec>
 	<natures>
 		<nature>org.eclipse.pde.PluginNature</nature>
diff --git a/org.eclipse.ote.logger/META-INF/MANIFEST.MF b/org.eclipse.ote.logger/META-INF/MANIFEST.MF
index 685af1d..0acaedd 100644
--- a/org.eclipse.ote.logger/META-INF/MANIFEST.MF
+++ b/org.eclipse.ote.logger/META-INF/MANIFEST.MF
@@ -6,3 +6,17 @@
 Bundle-Vendor: Eclipse Open System Engineering Environment
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Export-Package: org.eclipse.ote.logger
+Import-Package: ch.qos.logback.classic;version="1.0.7",
+ ch.qos.logback.classic.spi;version="1.0.7",
+ ch.qos.logback.core;version="1.0.7",
+ ch.qos.logback.core.spi;version="1.0.7",
+ ch.qos.logback.core.status;version="1.0.7",
+ org.apache.log4j;version="1.2.15",
+ org.apache.log4j.spi;version="1.2.15",
+ org.eclipse.osee.framework.jdk.core.util,
+ org.osgi.framework;version="1.8.0",
+ org.osgi.service.log;version="1.3.0",
+ org.slf4j;version="1.7.2"
+Service-Component: OSGI-INF/*.xml
+Bundle-ActivationPolicy: lazy
+Bundle-Activator: org.eclipse.ote.logger.internal.Activator
diff --git a/org.eclipse.ote.logger/OSGI-INF/log.ote.listener.xml b/org.eclipse.ote.logger/OSGI-INF/log.ote.listener.xml
new file mode 100644
index 0000000..7e28e3c
--- /dev/null
+++ b/org.eclipse.ote.logger/OSGI-INF/log.ote.listener.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" activate="activate" deactivate="deactivate" name="org.eclipse.ote.logger">
+   <implementation class="org.eclipse.ote.logger.internal.OsgiSlf4jLogger"/>
+   <reference cardinality="1..1" interface="org.osgi.service.log.LogReaderService" bind="setLogReaderService" name="LogReaderService" policy="static"/>
+</scr:component>
diff --git a/org.eclipse.ote.logger/build.properties b/org.eclipse.ote.logger/build.properties
index 34d2e4d..931e163 100644
--- a/org.eclipse.ote.logger/build.properties
+++ b/org.eclipse.ote.logger/build.properties
@@ -1,4 +1,5 @@
 source.. = src/
 output.. = bin/
 bin.includes = META-INF/,\
+               OSGI-INF/,\
                .
diff --git a/org.eclipse.ote.logger/pom.xml b/org.eclipse.ote.logger/pom.xml
index 099c924..4d72a95 100644
--- a/org.eclipse.ote.logger/pom.xml
+++ b/org.eclipse.ote.logger/pom.xml
@@ -3,7 +3,7 @@
 
 	<modelVersion>4.0.0</modelVersion>
 
-	<parent>
+    <parent>
 		<groupId>org.eclipse.osee</groupId>
 		<artifactId>org.eclipse.osee.ote.parent</artifactId>
 		<version>0.24.3-SNAPSHOT</version>
diff --git a/org.eclipse.ote.logger/src/org/eclipse/ote/logger/OTELog.java b/org.eclipse.ote.logger/src/org/eclipse/ote/logger/OTELog.java
new file mode 100644
index 0000000..624bff1
--- /dev/null
+++ b/org.eclipse.ote.logger/src/org/eclipse/ote/logger/OTELog.java
@@ -0,0 +1,47 @@
+package org.eclipse.ote.logger;
+
+import org.eclipse.ote.logger.internal.OTEAppender;
+import org.eclipse.ote.logger.internal.Sfl4jLogImpl;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * This is a Log helper class that you use to get a {@link Log} class.
+ * 
+ * @author Andrew M. Finkbeienr
+ *
+ */
+public class OTELog {
+   
+   private static OTEAppender logControl;
+   
+   static {
+      logControl = new OTEAppender();      
+      logControl.start();
+      Logger tempLogger = LoggerFactory.getLogger("ROOT");
+      if(tempLogger != null && tempLogger instanceof ch.qos.logback.classic.Logger){
+         ch.qos.logback.classic.Logger rootLogger = (ch.qos.logback.classic.Logger)tempLogger;
+         rootLogger.addAppender(logControl);
+      }
+
+   }
+   
+   /**
+    * Get a {@link Log} for the specified name.
+    * 
+    * @param name
+    * @return
+    */
+   public static Log getLogger(String name){
+      return new Sfl4jLogImpl(name);
+   }
+   
+   /**
+    * Get the {@link OTELogControl}
+    * @return
+    */
+   public static OTELogControl getLogControl(){
+      return logControl;
+   }
+   
+}
diff --git a/org.eclipse.ote.logger/src/org/eclipse/ote/logger/OTELogControl.java b/org.eclipse.ote.logger/src/org/eclipse/ote/logger/OTELogControl.java
index bfca86c..f39d4e4 100644
--- a/org.eclipse.ote.logger/src/org/eclipse/ote/logger/OTELogControl.java
+++ b/org.eclipse.ote.logger/src/org/eclipse/ote/logger/OTELogControl.java
@@ -1,5 +1,12 @@
 package org.eclipse.ote.logger;
 
+/**
+ * This gives you the ability to add a Log listener.  You will get a callback for every log so that you can potentially 
+ * act on a given log event happening.
+ * 
+ * @author Andrew M. Finkbeiner
+ *
+ */
 public interface OTELogControl {
    void addListener(OTELogListener listener);
    void removeListener(OTELogListener listener);
diff --git a/org.eclipse.ote.logger/src/org/eclipse/ote/logger/OTELogListener.java b/org.eclipse.ote.logger/src/org/eclipse/ote/logger/OTELogListener.java
index a81a1bf..220ee88 100644
--- a/org.eclipse.ote.logger/src/org/eclipse/ote/logger/OTELogListener.java
+++ b/org.eclipse.ote.logger/src/org/eclipse/ote/logger/OTELogListener.java
@@ -2,4 +2,6 @@
 
 public interface OTELogListener {
 
+   void log(String loggerName, int level, String string, Throwable throwable);
+
 }
diff --git a/org.eclipse.ote.logger/src/org/eclipse/ote/logger/internal/Activator.java b/org.eclipse.ote.logger/src/org/eclipse/ote/logger/internal/Activator.java
new file mode 100644
index 0000000..d8300d2
--- /dev/null
+++ b/org.eclipse.ote.logger/src/org/eclipse/ote/logger/internal/Activator.java
@@ -0,0 +1,19 @@
+package org.eclipse.ote.logger.internal;
+
+import org.eclipse.ote.logger.OTELog;
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+
+public class Activator implements BundleActivator {
+
+   @Override
+   public void start(BundleContext context) throws Exception {
+      OTELog.getLogger("org.eclipse.ote.logger").debug("bootstrapping logger");
+   }
+
+   @Override
+   public void stop(BundleContext context) throws Exception {
+
+   }
+
+}
diff --git a/org.eclipse.ote.logger/src/org/eclipse/ote/logger/internal/OTEAppender.java b/org.eclipse.ote.logger/src/org/eclipse/ote/logger/internal/OTEAppender.java
new file mode 100644
index 0000000..935ede1
--- /dev/null
+++ b/org.eclipse.ote.logger/src/org/eclipse/ote/logger/internal/OTEAppender.java
@@ -0,0 +1,50 @@
+package org.eclipse.ote.logger.internal;
+
+import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
+
+import org.eclipse.ote.logger.OTELogControl;
+import org.eclipse.ote.logger.OTELogListener;
+
+import ch.qos.logback.classic.spi.ILoggingEvent;
+import ch.qos.logback.classic.spi.IThrowableProxy;
+import ch.qos.logback.classic.spi.ThrowableProxy;
+import ch.qos.logback.core.AppenderBase;
+
+public class OTEAppender extends AppenderBase<ILoggingEvent> implements OTELogControl {
+
+   private List<OTELogListener> listeners;
+
+   public OTEAppender(){
+      listeners = new CopyOnWriteArrayList<OTELogListener>();
+   }
+   
+   @Override
+   protected void append(ILoggingEvent event) {
+      for(OTELogListener listener: listeners){
+         Throwable th = null;
+         IThrowableProxy proxy = event.getThrowableProxy();
+         if(proxy != null && proxy instanceof ThrowableProxy){
+            ThrowableProxy p = (ThrowableProxy)proxy;
+            th = p.getThrowable();
+         }
+         listener.log(event.getLoggerName(), event.getLevel().toInt(), event.getMessage().toString(), th);
+      }
+   }
+
+   @Override
+   public void addListener(OTELogListener listener) {
+      listeners.add(listener);
+   }
+
+   @Override
+   public void removeListener(OTELogListener listener) {
+      listeners.remove(listener);  
+   }
+
+   @Override
+   public void clear() {
+      
+   }
+
+}
diff --git a/org.eclipse.ote.logger.slf4j/src/org/eclipse/ote/logger/slf4j/internal/OsgiSlf4jLogger.java b/org.eclipse.ote.logger/src/org/eclipse/ote/logger/internal/OsgiSlf4jLogger.java
similarity index 80%
rename from org.eclipse.ote.logger.slf4j/src/org/eclipse/ote/logger/slf4j/internal/OsgiSlf4jLogger.java
rename to org.eclipse.ote.logger/src/org/eclipse/ote/logger/internal/OsgiSlf4jLogger.java
index f791473..3959c50 100644
--- a/org.eclipse.ote.logger.slf4j/src/org/eclipse/ote/logger/slf4j/internal/OsgiSlf4jLogger.java
+++ b/org.eclipse.ote.logger/src/org/eclipse/ote/logger/internal/OsgiSlf4jLogger.java
@@ -8,8 +8,9 @@
  * Contributors:
  *     Boeing - initial API and implementation
  *******************************************************************************/
-package org.eclipse.ote.logger.slf4j.internal;
+package org.eclipse.ote.logger.internal;
 
+import org.eclipse.ote.logger.OTELog;
 import org.osgi.service.log.LogListener;
 import org.osgi.service.log.LogReaderService;
 
@@ -21,13 +22,14 @@
    private LogListener listener;
    private LogReaderService logService;
 
-   public void setLoggingService(LogReaderService logService) {
+   public void setLogReaderService(LogReaderService logService) {
       this.logService = logService;
    }
 
    public synchronized void activate() {
+      OTELog.getLogger("test").debug("something");
       listener = new Slf4jLogListener();
-      logService.addLogListener(listener);
+      logService.addLogListener(listener);      
    }
 
    public synchronized void deactivate() {
diff --git a/org.eclipse.ote.logger.slf4j/src/org/eclipse/ote/logger/slf4j/internal/Sfl4jLogImpl.java b/org.eclipse.ote.logger/src/org/eclipse/ote/logger/internal/Sfl4jLogImpl.java
similarity index 87%
rename from org.eclipse.ote.logger.slf4j/src/org/eclipse/ote/logger/slf4j/internal/Sfl4jLogImpl.java
rename to org.eclipse.ote.logger/src/org/eclipse/ote/logger/internal/Sfl4jLogImpl.java
index e306a39..c9168b5 100644
--- a/org.eclipse.ote.logger.slf4j/src/org/eclipse/ote/logger/slf4j/internal/Sfl4jLogImpl.java
+++ b/org.eclipse.ote.logger/src/org/eclipse/ote/logger/internal/Sfl4jLogImpl.java
@@ -8,11 +8,9 @@
  * Contributors:
  *     Boeing - initial API and implementation
  *******************************************************************************/
-package org.eclipse.ote.logger.slf4j.internal;
+package org.eclipse.ote.logger.internal;
 
 import org.eclipse.ote.logger.Log;
-import org.osgi.framework.Bundle;
-import org.osgi.service.component.ComponentContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.slf4j.Marker;
@@ -32,26 +30,11 @@
    private Logger logger;
    private Marker marker;
 
-   public void start(ComponentContext context) {
-      if (logger == null) {
-         Bundle usingBundle = context.getUsingBundle();
-         String symbolicName = null;
-         if (usingBundle != null) {
-            symbolicName = usingBundle.getSymbolicName();
-         } else {
-            symbolicName = "Osee Log";
-         }
-         logger = LoggerFactory.getLogger(symbolicName);
-         marker = MarkerFactory.getMarker(symbolicName);
-         debug("Logger setup for [%s]", logger.getName());
-      }
+   public Sfl4jLogImpl(String name){
+      logger = LoggerFactory.getLogger(name);
+      marker = MarkerFactory.getMarker(name);
    }
-
-   public void stop() {
-      logger = null;
-      marker = null;
-   }
-
+   
    private Logger getLogger() {
       return logger;
    }
diff --git a/org.eclipse.ote.logger.slf4j/src/org/eclipse/ote/logger/slf4j/internal/Slf4jLogListener.java b/org.eclipse.ote.logger/src/org/eclipse/ote/logger/internal/Slf4jLogListener.java
similarity index 97%
rename from org.eclipse.ote.logger.slf4j/src/org/eclipse/ote/logger/slf4j/internal/Slf4jLogListener.java
rename to org.eclipse.ote.logger/src/org/eclipse/ote/logger/internal/Slf4jLogListener.java
index 08c1cbf..5d29c37 100644
--- a/org.eclipse.ote.logger.slf4j/src/org/eclipse/ote/logger/slf4j/internal/Slf4jLogListener.java
+++ b/org.eclipse.ote.logger/src/org/eclipse/ote/logger/internal/Slf4jLogListener.java
@@ -8,7 +8,7 @@
  * Contributors:
  *     Boeing - initial API and implementation
  *******************************************************************************/
-package org.eclipse.ote.logger.slf4j.internal;
+package org.eclipse.ote.logger.internal;
 
 import org.osgi.service.log.LogEntry;
 import org.osgi.service.log.LogListener;
@@ -28,7 +28,7 @@
    @Override
    public void logged(LogEntry entry) {
       try {
-         String symbolicName = entry.getBundle().getSymbolicName();
+         String symbolicName = entry.getBundle().getSymbolicName();// + ".osgilog";
          Logger logger = LoggerFactory.getLogger(symbolicName);
          Marker marker = MarkerFactory.getMarker(symbolicName);
          logLogEntry(logger, entry.getLevel(), marker, entry.getMessage(), entry.getException());
diff --git a/org.eclipse.ote.scheduler/META-INF/MANIFEST.MF b/org.eclipse.ote.scheduler/META-INF/MANIFEST.MF
index 3b56451..0940d22 100644
--- a/org.eclipse.ote.scheduler/META-INF/MANIFEST.MF
+++ b/org.eclipse.ote.scheduler/META-INF/MANIFEST.MF
@@ -5,3 +5,4 @@
 Bundle-Version: 0.24.3.qualifier
 Export-Package: org.eclipse.ote.scheduler
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Import-Package: org.eclipse.ote.logger
diff --git a/org.eclipse.ote.scheduler/src/org/eclipse/ote/scheduler/SchedulerImpl.java b/org.eclipse.ote.scheduler/src/org/eclipse/ote/scheduler/SchedulerImpl.java
index d27acc9..3bfc5e1 100644
--- a/org.eclipse.ote.scheduler/src/org/eclipse/ote/scheduler/SchedulerImpl.java
+++ b/org.eclipse.ote.scheduler/src/org/eclipse/ote/scheduler/SchedulerImpl.java
@@ -2,7 +2,6 @@
 
 import java.util.ArrayList;
 import java.util.List;
-import java.util.concurrent.ArrayBlockingQueue;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
@@ -12,8 +11,13 @@
 import java.util.concurrent.locks.Condition;
 import java.util.concurrent.locks.ReentrantLock;
 
+import org.eclipse.ote.logger.Log;
+import org.eclipse.ote.logger.OTELog;
+
 public class SchedulerImpl implements Scheduler {
 
+   Log log = OTELog.getLogger("org.eclipse.ote.scheduler");
+   
    public enum DelayStrategy{
       busy, yeild, sleep
    }
@@ -125,7 +129,7 @@
                      try{
                         boolean removed = simulatedEnvNotifyTasks.remove(task);
                         if(!removed){
-                           System.out.println("boo");
+                           log.debug("failed to remove a simulated task");
                         }
                         simulatedEnvNotifyTasks.print();
                         task.call();
@@ -162,9 +166,9 @@
                   step();
                }
                for(OTETask t:tasks){
-                  System.out.println(t);
+                  log.debug(t.toString());
                }
-               System.out.println("exit scheduler");
+               log.debug("exit scheduler");
             }
 
             
@@ -185,7 +189,7 @@
          while(it.hasNext()){
             OTETask task = it.next();
             if(task == null){
-               System.out.println("what?");
+               log.debug("task should not be null");
             }
             if(task != null && task.getTime() <= time){
                submittedTasks.add(pool.submit(task));
@@ -330,7 +334,7 @@
          removed = tasks.remove(task);
       }
       if(removed && task instanceof OTETaskHeavy){
-         System.out.println(task.toString());
+         log.debug(task.toString());
       }
       return removed;
    }