Source code for components.loggers
import os
import logging
import logging.handlers
[docs]def logger_configurer(cli_stdout_loglevel: str, cli_file_loglevel: str, verbose: bool) -> None:
"""
Configures logger settings for file and stdout handlers.
:param cli_stdout_loglevel: LogLevel for stdout logger handler based on CLI option. Defaults to ERROR.
:type cli_stdout_loglevel: str
:param cli_file_loglevel: LogLevel for file logger handler based on CLI option. Defaults to INFO.
:type cli_stdout_loglevel: str
:param verbose: Flag toggling LogLevel for stdout logger handler, if True sets to ERROR, else INFO.
:type verbose: str
"""
levels = {
'critical': logging.CRITICAL,
'error': logging.ERROR,
'warn': logging.WARNING,
'warning': logging.WARNING,
'info': logging.INFO,
'debug': logging.DEBUG
}
if verbose:
slevel = levels.get(cli_stdout_loglevel.lower(), logging.ERROR)
else:
slevel = 20
flevel = levels.get(cli_file_loglevel.lower(), logging.INFO)
logger = logging.getLogger()
logger.setLevel(slevel)
log_path = os.path.join(os.path.abspath(__file__),
'..', '..', './logs/sfr.log')
handler_f = logging.handlers.RotatingFileHandler(
log_path, 'a', 1_000_000, 3)
handler_s = logging.StreamHandler()
handler_s.setLevel(flevel)
formatter = logging.Formatter('%(asctime)-20s| %(levelname)-8s| %(processName)-12s| '
'%(message)s', '%Y-%m-%d %H:%M:%S')
handler_f.setFormatter(formatter)
handler_s.setFormatter(formatter)
logger.addHandler(handler_f)
logger.addHandler(handler_s)
return None
if __name__ == '__main__':
pass