2019-05-09 15:04:59 +00:00
|
|
|
import sys
|
2021-06-08 18:25:38 +00:00
|
|
|
import threading
|
|
|
|
import os
|
|
|
|
import json
|
|
|
|
import datetime
|
|
|
|
|
|
|
|
from opendm.loghelpers import double_quote, args_to_dict
|
2021-04-30 19:45:48 +00:00
|
|
|
|
|
|
|
if sys.platform == 'win32':
|
|
|
|
# No colors on Windows, sorry!
|
|
|
|
HEADER = ''
|
|
|
|
OKBLUE = ''
|
|
|
|
OKGREEN = ''
|
|
|
|
DEFAULT = ''
|
|
|
|
WARNING = ''
|
|
|
|
FAIL = ''
|
|
|
|
ENDC = ''
|
|
|
|
else:
|
|
|
|
HEADER = '\033[95m'
|
|
|
|
OKBLUE = '\033[94m'
|
|
|
|
OKGREEN = '\033[92m'
|
|
|
|
DEFAULT = '\033[39m'
|
|
|
|
WARNING = '\033[93m'
|
|
|
|
FAIL = '\033[91m'
|
|
|
|
ENDC = '\033[0m'
|
2015-11-17 11:54:56 +00:00
|
|
|
|
2021-06-08 18:25:38 +00:00
|
|
|
lock = threading.Lock()
|
|
|
|
|
|
|
|
def odm_version():
|
|
|
|
with open(os.path.join(os.path.dirname(__file__), "..", "VERSION")) as f:
|
|
|
|
return f.read().split("\n")[0].strip()
|
|
|
|
|
2019-05-08 20:19:05 +00:00
|
|
|
class ODMLogger:
|
2019-06-28 15:10:08 +00:00
|
|
|
def __init__(self):
|
|
|
|
self.show_debug = False
|
2021-06-08 18:25:38 +00:00
|
|
|
self.json = None
|
|
|
|
self.json_output_file = None
|
|
|
|
self.start_time = datetime.datetime.now()
|
2019-06-28 15:10:08 +00:00
|
|
|
|
2019-05-08 20:19:05 +00:00
|
|
|
def log(self, startc, msg, level_name):
|
|
|
|
level = ("[" + level_name + "]").ljust(9)
|
2021-06-08 18:25:38 +00:00
|
|
|
with lock:
|
|
|
|
print("%s%s %s%s" % (startc, level, msg, ENDC))
|
|
|
|
sys.stdout.flush()
|
|
|
|
|
|
|
|
def init_json_output(self, output_file, args):
|
|
|
|
self.json_output_file = output_file
|
|
|
|
self.json = {}
|
|
|
|
self.json['odmVersion'] = odm_version()
|
|
|
|
self.json['options'] = args_to_dict(args)
|
|
|
|
self.json["startTime"] = self.start_time.isoformat()
|
|
|
|
self.json["stages"] = []
|
|
|
|
|
2019-05-08 20:19:05 +00:00
|
|
|
def info(self, msg):
|
2019-06-28 15:10:08 +00:00
|
|
|
self.log(DEFAULT, msg, "INFO")
|
2019-05-08 20:19:05 +00:00
|
|
|
|
|
|
|
def warning(self, msg):
|
|
|
|
self.log(WARNING, msg, "WARNING")
|
|
|
|
|
|
|
|
def error(self, msg):
|
|
|
|
self.log(FAIL, msg, "ERROR")
|
|
|
|
|
|
|
|
def exception(self, msg):
|
|
|
|
self.log(FAIL, msg, "EXCEPTION")
|
2016-03-03 16:31:25 +00:00
|
|
|
|
2019-05-08 20:19:05 +00:00
|
|
|
def debug(self, msg):
|
2019-06-28 15:10:08 +00:00
|
|
|
if self.show_debug:
|
|
|
|
self.log(OKGREEN, msg, "DEBUG")
|
2016-03-03 16:31:25 +00:00
|
|
|
|
2021-06-08 18:25:38 +00:00
|
|
|
def close(self):
|
|
|
|
if self.json is not None and self.json_output_file is not None:
|
|
|
|
with open(self.json_output_file, 'w') as f:
|
|
|
|
f.write(json.dumps(self.json, indent=4))
|
|
|
|
|
2019-05-08 20:19:05 +00:00
|
|
|
logger = ODMLogger()
|
2016-02-26 18:50:12 +00:00
|
|
|
|
2019-05-08 20:19:05 +00:00
|
|
|
ODM_INFO = logger.info
|
|
|
|
ODM_WARNING = logger.warning
|
|
|
|
ODM_ERROR = logger.error
|
|
|
|
ODM_EXCEPTION = logger.exception
|
|
|
|
ODM_DEBUG = logger.debug
|