Source code for components.loggers

"""
requests.adapters
~~~~~~~~~~~~~~~~~
This module contains the transport adapters that Requests uses to define
and maintain connections.
"""

import os
import logging
import logging.handlers
from pathlib import Path


[docs]def logger_configurer(*, stdout_loglevel: str, file_loglevel: str, log_path: os.PathLike | None, 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 not verbose: slevel = levels.get(stdout_loglevel.lower(), logging.ERROR) else: slevel = 20 flevel = levels.get(file_loglevel.lower(), 20) logger = logging.getLogger() logger.setLevel(slevel) formatter = logging.Formatter('%(asctime)-20s| %(levelname)-8s| %(processName)-12s| ' '%(message)s', '%Y-%m-%d %H:%M:%S') if log_path: f_path = os.path.join(Path(log_path), 'sfrout.log') handler_f = logging.handlers.RotatingFileHandler( f_path, 'a', 1_000_000, 3) handler_f.setFormatter(formatter) logger.addHandler(handler_f) handler_s = logging.StreamHandler() handler_s.setLevel(flevel) handler_s.setFormatter(formatter) logger.addHandler(handler_s) return None
if __name__ == '__main__': pass