import cms_watcher, cad_watcher, time, json # Unified Logging Service # jdalbey 7/6/2019 # Load the sim time file and extract the seconds */ def getSimTime(): with open ("../dynamicdata/sim_elapsedtime.json", 'r') as myfile: jsonData=myfile.read() seconds = json.loads(jsonData)['elapsedtime'] # convert seconds to H:MM:SS m, s = divmod(int(seconds), 60) h, m = divmod(m, 60) return "%d:%02d:%02d" % (h, m, s) def main(): # Delete any previously existing output file f = open("../dynamicdata/unifiedlog.html", "w") startHTML = "
"
    f.write(startHTML);
    f.close()            
    # List of the available plugin modules 
    plugins = ["cms_watcher","cad_watcher"]
    #FOR each plugin LOOP
    for plugin in plugins:
        # dynamically load the setup function for this plugin
        plugmodule = globals()[plugin]
        setupfunc = getattr(plugmodule, 'setup')
        #Call setup
        setupfunc()
    #END LOOP
    
    #DO Forever
    while True:
    #    Get simulation time
        timeStamp = getSimTime()
    #    Reset Output Buffer
        output = ""
        results = []
    #    FOR each plugin LOOP
        for plugin in plugins:
            # dynamically load the setup function for this plugin
            plugmodule = globals()[plugin]
            getfunc = getattr(plugmodule, 'getLogEntries')
            
    #        Run the plugin process returning new log entries
            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
    #    IF the Output Buffer has any contents THEN
        if len(output) > 0:
    #       Write (append) Output Buffer to unified log file 
            print output,
            f = open("../dynamicdata/unifiedlog.html", "a")
            f.write(output)
            f.close()            
    #    END IF
    #    Wait one second
        time.sleep(1)

#END DO
if __name__ == "__main__":
    main()