Index: trunk/webapps/unifiedlogger/cms_watcher.py
===================================================================
--- trunk/webapps/unifiedlogger/cms_watcher.py	(revision 431)
+++ trunk/webapps/unifiedlogger/cms_watcher.py	(revision 433)
@@ -56,6 +56,9 @@
                     msgList[idx]['cms']['message']['phase2']['Line3'])
 
-# Compare previous messages to current messages to look for changes
-def compare():
+def setup():
+     extractMessages(initialize())
+
+# compare previous messages to current messages to look for changes
+def getLogEntries():
      global prevList, currList
      msgList = readFile()
@@ -80,8 +83,4 @@
      return results
 
-def setup():
-     msgList = initialize()
-     extractMessages(msgList)
-
 def main():
      global currList
@@ -90,5 +89,5 @@
      while True:
           # Look for changed messages
-          answer = compare()
+          answer = getLogEntries()
           # Output results
           for item in answer:
Index: trunk/webapps/unifiedlogger/cad_watcher.py
===================================================================
--- trunk/webapps/unifiedlogger/cad_watcher.py	(revision 433)
+++ trunk/webapps/unifiedlogger/cad_watcher.py	(revision 433)
@@ -0,0 +1,48 @@
+import json, time
+from copy import deepcopy
+
+# CAD comment log Watcher
+# Look for changes in the CAD comment log
+# jdalbey  7/6/2019
+
+lastLineNum = 0
+
+# Utility functions
+def isEmpty(cmsitem):
+    return cmsitem == ",,,,,"
+def isFull(cmsitem):
+    return not isEmpty(cmsitem)
+
+# Read the cms message file
+def readFile():     
+    text_file = open("../../CADcomments.log", "r")
+    lines = text_file.read().split('\n')
+    return lines
+    
+def setup():
+    # nothing needed for setup
+    return
+
+# Retrieve new messages from CAD comment log 
+def getLogEntries():
+    global lastLineNum
+    msgList = readFile()
+    currList = []
+    currList = msgList[lastLineNum:]    # new items since last file read
+    lastLineNum = len(msgList)-1
+    return currList
+
+def main():
+    setup()
+    # Loop Forever
+    while True:
+        # Look for changed messages
+        answer = getLogEntries()
+        # Output results
+        for item in answer:
+            print item
+        # wait 
+        time.sleep(5)
+
+if __name__ == "__main__":
+    main()
Index: trunk/webapps/unifiedlogger/logging_service.py
===================================================================
--- trunk/webapps/unifiedlogger/logging_service.py	(revision 431)
+++ trunk/webapps/unifiedlogger/logging_service.py	(revision 433)
@@ -1,3 +1,3 @@
-import cms_watcher, time, json
+import cms_watcher, cad_watcher, time, json
 # Unified Logging Service
 # jdalbey 7/6/2019
@@ -16,10 +16,15 @@
 
 def main():
+    # Delete any previously existing output file
+    f = open("../dynamicdata/unifiedlog.html", "w")
+    startHTML = "<HTML><HEAD><meta http-equiv=\"refresh\" content=\"5\" /></HEAD><BODY><PRE>"
+    f.write(startHTML);
+    f.close()            
     # List of the available plugin modules 
-    plugins = ["cms_watcher"]
+    plugins = ["cms_watcher","cad_watcher"]
     #FOR each plugin LOOP
     for plugin in plugins:
         # dynamically load the setup function for this plugin
-        plugmodule = locals()[plugin]
+        plugmodule = globals()[plugin]
         setupfunc = getattr(plugmodule, 'setup')
         #Call setup
@@ -33,20 +38,26 @@
     #    Reset Output Buffer
         output = ""
+        results = []
     #    FOR each plugin LOOP
         for plugin in plugins:
             # dynamically load the setup function for this plugin
-            plugmodule = locals()[plugin]
-            comparefunc = getattr(plugmodule, 'compare')
+            plugmodule = globals()[plugin]
+            getfunc = getattr(plugmodule, 'getLogEntries')
             
     #        Run the plugin process returning new log entries
-            results = comparefunc()          # Look for changed messages
+            results = getfunc()     
+            #    Append simulation time and the log entries to the Output Buffer
+            for item in results:
+                trimmed_item = item.strip()
+                if len(trimmed_item) > 0:
+                    output += timeStamp + " " + trimmed_item + "\n"
     #    END LOOP
-    #    Append simulation time and the log entries to the Output Buffer
-        for item in results:
-            output += timeStamp + " " + item + "\n"
     #    IF the Output Buffer has any contents THEN
         if len(output) > 0:
     #       Write (append) Output Buffer to unified log file 
-            print output
+            print output,
+            f = open("../dynamicdata/unifiedlog.html", "a")
+            f.write(output)
+            f.close()            
     #    END IF
     #    Wait one second
