35 lines
1.2 KiB
Python
35 lines
1.2 KiB
Python
import logging
|
|
from logging import Logger
|
|
import os
|
|
import sys
|
|
|
|
|
|
def getLogger(name: str = 'root', loglevel: str = 'INFO') -> Logger:
|
|
logger = logging.getLogger(name)
|
|
|
|
# if logger 'name' already exists, return it to avoid logging duplicate
|
|
# messages by attaching multiple handlers of the same type
|
|
if logger.handlers:
|
|
return logger
|
|
# if logger 'name' does not already exist, create it and attach handlers
|
|
else:
|
|
# set logLevel to loglevel or to INFO if requested level is incorrect
|
|
loglevel = getattr(logging, loglevel.upper(), "INFO")
|
|
logger.setLevel(loglevel)
|
|
if loglevel == logging.DEBUG:
|
|
fmt = '%(asctime)s %(levelname)-8s %(message)s (%(filename)s)'
|
|
else:
|
|
fmt = '%(asctime)s %(levelname)-8s %(message)s'
|
|
fmt_date = '%Y-%m-%dT%T'
|
|
formatter = logging.Formatter(fmt, fmt_date)
|
|
handler = logging.StreamHandler()
|
|
handler.setFormatter(formatter)
|
|
logger.addHandler(handler)
|
|
|
|
if logger.name == 'root':
|
|
logger.warning(
|
|
'Running: %s %s',
|
|
os.path.basename(sys.argv[0]),
|
|
' '.join(sys.argv[1:]))
|
|
return logger
|