Пример #1
0
def log2exception(code, sys_exc_info, message=None, die=False):
    """Log trace message to file and STDOUT, but don't die.

    Args:
        code: Message code
        sys_exc_info: Tuple from exception from sys.exc_info
        die: Die if True

    Returns:
        None

    """
    # Initialize key variables
    (exc_type, exc_value, exc_traceback) = sys_exc_info
    log_message = ('''\
Bug: Exception Type:{}, Exception Instance: {}, Stack Trace Object: {}]\
'''.format(exc_type, exc_value, exc_traceback))
    log2warning(code, log_message)
    if bool(message) is True:
        log2warning(code, message)

    # Write trace to log file
    from pattoo_shared.configuration import Config
    config = Config()
    log_file = config.log_file()
    with open(log_file, 'a+') as _fh:
        traceback.print_tb(exc_traceback, file=_fh)

    # Die
    if bool(die) is True:
        log2die(code, log_message)
Пример #2
0
    def __init__(self):
        """Initialize the class."""
        # Pattoo libraries
        from pattoo_shared.configuration import Config

        # Define key variables
        app_name = 'pattoo'
        levels = {
            'debug': logging.DEBUG,
            'info': logging.INFO,
            'warning': logging.WARNING,
            'error': logging.ERROR,
            'critical': logging.CRITICAL
        }

        # Get the logging directory
        config = Config()
        log_file = config.log_file()
        config_log_level = config.log_level()

        # Set logging level
        if config_log_level in levels:
            log_level = levels[config_log_level]
        else:
            log_level = levels['debug']

        # create logger with app_name
        self.logger_file = logging.getLogger('{}_file'.format(app_name))
        self.logger_stdout = logging.getLogger('{}_console'.format(app_name))

        # Set logging levels to file and stdout
        self.logger_stdout.setLevel(log_level)
        self.logger_file.setLevel(log_level)

        # create file handler which logs even debug messages
        file_handler = logging.FileHandler(log_file)
        file_handler.setLevel(log_level)

        # create console handler with a higher log level
        stdout_handler = logging.StreamHandler()
        stdout_handler.setLevel(log_level)

        # create formatter and add it to the handlers
        formatter = logging.Formatter(
            '%(asctime)s - %(name)s - %(levelname)s - %(message)s')
        file_handler.setFormatter(formatter)
        stdout_handler.setFormatter(formatter)

        # add the handlers to the logger
        self.logger_file.addHandler(file_handler)
        self.logger_stdout.addHandler(stdout_handler)