Source code for masterpiece.core.log

import argparse
import logging
import sys

[docs] class Log(logging.Logger): """Default logger for logging events to application log and/or to console.""" def __init__(self, name, level=logging.DEBUG) -> None: """Creates and initializes default logger with the given name and logging level. Typically the name is the name of the application. Args: name: name of the logger level: logging level, the default is logging.DEBUG """ super().__init__(name, level) parser = argparse.ArgumentParser(add_help=False) parser.add_argument( "-f", "--log_name", type=str, default=name, help="Name of the log file" ) parser.add_argument( "-l", "--log_level", type=int, default=logging.INFO, help="Logging level" ) args, remaining_argv = parser.parse_known_args() sys.argv = [sys.argv[0]] + remaining_argv # create logger logger = logging.getLogger(name) logger.setLevel(args.log_level) # log file file_formatter = logging.Formatter( "%(asctime)s [%(levelname)-5.5s] %(message)-0.280s" ) file_handler = logging.FileHandler(args.log_name) file_handler.setFormatter(file_formatter) self.addHandler(file_handler) # console console_formatter = logging.Formatter( "[%(levelname)-5.5s] %(message)-0.280s" ) console_handler = logging.StreamHandler() console_handler.setFormatter(console_formatter) self.addHandler(console_handler)