2021-11-12 09:04:53 +01:00
|
|
|
"""Logging module"""
|
|
|
|
|
2021-08-14 21:37:43 +02:00
|
|
|
import logging
|
|
|
|
|
2021-10-15 19:56:50 +02:00
|
|
|
|
2021-11-12 20:15:53 +01:00
|
|
|
def get_logger(name, level=30):
|
|
|
|
"""Get logger"""
|
|
|
|
logger = logging.getLogger(name)
|
|
|
|
logger.setLevel(level)
|
2021-08-14 21:37:43 +02:00
|
|
|
|
2021-11-12 20:15:53 +01:00
|
|
|
return logger
|
2021-10-16 19:29:52 +02:00
|
|
|
|
|
|
|
|
2021-11-12 20:15:53 +01:00
|
|
|
def log_format(level):
|
2021-10-18 20:48:23 +02:00
|
|
|
if level > 10:
|
2021-11-12 20:15:53 +01:00
|
|
|
return '%(levelname)s:%(message)s'
|
2021-10-18 20:48:23 +02:00
|
|
|
|
2021-11-12 20:15:53 +01:00
|
|
|
return '%(levelname)s:%(name)s:%(message)s'
|
|
|
|
|
|
|
|
|
|
|
|
def set_formatter(handler, level):
|
|
|
|
"""create formatter and add it to the handlers"""
|
|
|
|
formatter = logging.Formatter(log_format(level))
|
|
|
|
handler.setFormatter(formatter)
|
|
|
|
|
|
|
|
|
|
|
|
def console(logger, level=30):
|
|
|
|
"""create console handler with a higher log level"""
|
2021-11-12 09:04:53 +01:00
|
|
|
logger.setLevel(level)
|
2021-11-12 20:15:53 +01:00
|
|
|
handler = logging.StreamHandler()
|
|
|
|
handler.setLevel(level)
|
|
|
|
set_formatter(handler, level)
|
2021-11-12 09:04:53 +01:00
|
|
|
|
2021-11-12 20:15:53 +01:00
|
|
|
# add the handlers to logger
|
|
|
|
logger.addHandler(handler)
|
|
|
|
|
|
|
|
|
|
|
|
def file_logger(logger, file, level=30):
|
|
|
|
"""create file handler that logs debug and higher level messages"""
|
|
|
|
logger.setLevel(level)
|
|
|
|
handler = logging.FileHandler(file)
|
|
|
|
handler.setLevel(level)
|
|
|
|
set_formatter(handler, log_format(level))
|
|
|
|
|
|
|
|
# add the handlers to logger
|
|
|
|
logger.addHandler(handler)
|
|
|
|
|
|
|
|
|
2022-08-28 13:46:26 +02:00
|
|
|
def get_level(quiet=False, verbose=False, debug=False, num=None):
|
|
|
|
"""Return int logging level from command line args"""
|
|
|
|
if num and num.isnumeric():
|
2021-11-12 20:15:53 +01:00
|
|
|
return int(verbose)
|
|
|
|
|
2022-08-28 13:46:26 +02:00
|
|
|
if debug:
|
|
|
|
return int(logging.getLevelName('DEBUG'))
|
|
|
|
if verbose:
|
|
|
|
return int(logging.getLevelName('INFO'))
|
|
|
|
if quiet:
|
|
|
|
return int(logging.getLevelName('ERROR'))
|
|
|
|
|
|
|
|
return int(logging.getLevelName('WARNING'))
|