Index: dialin/utils/base.py =================================================================== diff -u -radd8b1e7cce0187c9fb5b09a5881d0121f9a0ddb -r8d1e195e98679117283899b38dbfb40d8840ec10 --- dialin/utils/base.py (.../base.py) (revision add8b1e7cce0187c9fb5b09a5881d0121f9a0ddb) +++ dialin/utils/base.py (.../base.py) (revision 8d1e195e98679117283899b38dbfb40d8840ec10) @@ -18,9 +18,36 @@ from datetime import datetime import os import logging -from typing import List +def create_logger(log_path: str = "/tmp/DialinScript.log", level: str = "ERROR"): + """ + Convenience function to create a logger for external Dialin scripts + + @param log_path: (str) The full path to the output log file. + @param level: (str) The logging level (e.g. INFO, WARN, DEBUG, ERROR, CRITICAL) + @return: (logging.Logger) The logger object + """ + + numeric_level = getattr(logging, level, logging.ERROR) + + logger = logging.getLogger("DialinScript") + logger.setLevel(numeric_level) + + fh = logging.FileHandler(log_path) + fh.setLevel(numeric_level) + ch = logging.StreamHandler() + ch.setLevel(numeric_level) + formatter = logging.Formatter(fmt=_LogManager.LOG_FMT, + datefmt=_LogManager.LOG_DT_FMT) + fh.setFormatter(formatter) + ch.setFormatter(formatter) + + logger.addHandler(fh) + logger.addHandler(ch) + return logger + + class AbstractObserver(ABC): """ Publicly accessible parent class for all observers. @@ -68,6 +95,9 @@ class _LogManager(ABC): + LOG_FMT = '%(asctime)s,%(msecs)d %(levelname)-8s [%(filename)s:%(lineno)d] %(message)s' + LOG_DT_FMT = '%m-%d-%Y:%H:%M:%S' + def __init__(self, log_level=None, log_filepath="Dialin.log"): """ @@ -147,8 +177,8 @@ fh.setLevel(numeric_level) ch = logging.StreamHandler() ch.setLevel(numeric_level) - formatter = logging.Formatter(fmt='%(asctime)s,%(msecs)d %(levelname)-8s [%(filename)s:%(lineno)d] %(message)s', - datefmt='%m-%d-%Y:%H:%M:%S') + formatter = logging.Formatter(fmt=self.LOG_FMT, + datefmt=self.LOG_DT_FMT) fh.setFormatter(formatter) ch.setFormatter(formatter) Index: tests/test_logging.py =================================================================== diff -u -rb62b040b80e3b42e9749ee8689f5d65c5dcc71e0 -r8d1e195e98679117283899b38dbfb40d8840ec10 --- tests/test_logging.py (.../test_logging.py) (revision b62b040b80e3b42e9749ee8689f5d65c5dcc71e0) +++ tests/test_logging.py (.../test_logging.py) (revision 8d1e195e98679117283899b38dbfb40d8840ec10) @@ -35,7 +35,7 @@ print(dg.dg_version) if True: # hd = HD(log_level="CAN_ONLY") - hd = HD(log_level="DEBUG") + hd = HD(log_level="CAN_ONLY") if hd.cmd_log_in_to_hd(): hd.ui.cmd_ui_request_hd_version()