# -*-mode: python; py-indent-offset: 2; indent-tabs-mode: nil; coding: utf-8-unix -*- import sys import logging try: # if 'COLOREDLOGS_LEVEL_STYLES' not in os.environ: # os.environ['COLOREDLOGS_LEVEL_STYLES'] = 'spam=22;debug=28;verbose=34;notice=220;warning=202;success=118,bold;error=124;critical=background=red' # https://pypi.org/project/coloredlogs/ import coloredlogs except ImportError: coloredlogs = False def vsetup_logging(theLOG, log_level, logfile='', stream=sys.stdout) -> None: global LOG LOG = theLOG add = True logging._defaultFormatter = logging.Formatter(datefmt='%m-%d %H:%M:%S') logging._defaultFormatter.default_time_format = '%m-%d %H:%M:%S' logging._defaultFormatter.default_msec_format = '' if logfile: add = logfile.startswith('+') sub = logfile.startswith('-') if add or sub: logfile = logfile[1:] kwargs['filename'] = logfile if coloredlogs: coloredlogs.DEFAULT_LEVEL_STYLES['info']=dict(color='white',bold=True) coloredlogs.DEFAULT_LEVEL_STYLES['debug']=dict(color='cyan') coloredlogs.DEFAULT_LEVEL_STYLES['warn']=dict(color='yellow',bold=True) coloredlogs.DEFAULT_LEVEL_STYLES['error']=dict(color='red',bold=True) coloredlogs.DEFAULT_FIELD_STYLES['levelname=']=dict(color='green', bold=True), # https://pypi.org/project/coloredlogs/ aKw = dict(level=log_level, logger=LOG, stream=stream, fmt='%(levelname)s %(message)s', isatty=True, milliseconds=False, ) coloredlogs.install(**aKw) if logfile: oHandler = logging.FileHandler(logfile) LOG.addHandler(oHandler) LOG.debug(f"Setting coloured log_level to {log_level}") else: kwargs = dict(level=log_level, force=True, format='%(levelname)s %(message)s') logging.basicConfig(**kwargs) if add and logfile: oHandler = logging.StreamHandler(stream) LOG.addHandler(oHandler) LOG.debug(f"SSetting log_level to {log_level}")