mirror of
				https://github.com/avatao-content/baseimage-tutorial-framework
				synced 2025-11-04 13:22:54 +00:00 
			
		
		
		
	Refactor TFWLog
This commit is contained in:
		@@ -1,29 +1,18 @@
 | 
			
		||||
# pylint: disable=bad-whitespace
 | 
			
		||||
from sys import stderr
 | 
			
		||||
from collections import deque
 | 
			
		||||
from datetime import datetime
 | 
			
		||||
from traceback import format_exception, walk_tb
 | 
			
		||||
from logging import DEBUG, getLogger, Handler, Formatter, Filter
 | 
			
		||||
 | 
			
		||||
from .envvars import TFWENV
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class COLOR:
 | 
			
		||||
    BLACK       = '\033[30m'
 | 
			
		||||
class Color:
 | 
			
		||||
    GREY        = '\033[30;1m'
 | 
			
		||||
    RED         = '\033[31m'
 | 
			
		||||
    BOLDRED     = '\033[31;1m'
 | 
			
		||||
    GREEN       = '\033[32m'
 | 
			
		||||
    BOLDGREEN   = '\033[32;1m'
 | 
			
		||||
    ORANGE      = '\033[33m'
 | 
			
		||||
    YELLOW      = '\033[33;1m'
 | 
			
		||||
    BLUE        = '\033[34m'
 | 
			
		||||
    BOLDBLUE    = '\033[34;1m'
 | 
			
		||||
    MAGENTA     = '\033[35m'
 | 
			
		||||
    BOLDMAGENTA = '\033[35;1m'
 | 
			
		||||
    CYAN        = '\033[36m'
 | 
			
		||||
    BOLDCYAN    = '\033[36;1m'
 | 
			
		||||
    WHITE       = '\033[37m'
 | 
			
		||||
    BOLDWHITE   = '\033[37;1m'
 | 
			
		||||
    RESET       = '\033[0m'
 | 
			
		||||
 | 
			
		||||
@@ -63,17 +52,16 @@ class TFWLogHandler(Handler):
 | 
			
		||||
 | 
			
		||||
class TFWLogFormatter(Formatter):
 | 
			
		||||
    severity_to_color = {
 | 
			
		||||
        'CRITICAL' : COLOR.BOLDRED,
 | 
			
		||||
        'ERROR'    : COLOR.RED,
 | 
			
		||||
        'WARNING'  : COLOR.YELLOW,
 | 
			
		||||
        'INFO'     : COLOR.BOLDGREEN,
 | 
			
		||||
        'DEBUG'    : COLOR.BOLDWHITE,
 | 
			
		||||
        'NOTSET'   : COLOR.CYAN
 | 
			
		||||
        'CRITICAL' : Color.BOLDRED,
 | 
			
		||||
        'ERROR'    : Color.RED,
 | 
			
		||||
        'WARNING'  : Color.YELLOW,
 | 
			
		||||
        'INFO'     : Color.BOLDGREEN,
 | 
			
		||||
        'DEBUG'    : Color.BOLDWHITE,
 | 
			
		||||
        'NOTSET'   : Color.CYAN
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    def __init__(self, limit):
 | 
			
		||||
        self.limit = limit
 | 
			
		||||
        self.last_trace = None
 | 
			
		||||
        super().__init__()
 | 
			
		||||
 | 
			
		||||
    def format(self, record):
 | 
			
		||||
@@ -87,23 +75,11 @@ class TFWLogFormatter(Formatter):
 | 
			
		||||
            short_message = record.msg
 | 
			
		||||
            long_message = record.msg
 | 
			
		||||
 | 
			
		||||
        if record.exc_info:
 | 
			
		||||
            current_trace = self.fetch_exception_origin(record.exc_info[2])
 | 
			
		||||
            if current_trace != self.last_trace:
 | 
			
		||||
                self.last_trace = current_trace
 | 
			
		||||
                trace = '\n'+''.join(format_exception(*record.exc_info))
 | 
			
		||||
            else:
 | 
			
		||||
                trace = (f'\nSee previous traceback...\n'
 | 
			
		||||
                         f'{record.exc_info[0].__name__}: {record.exc_info[1]}')
 | 
			
		||||
        else:
 | 
			
		||||
            trace = ''
 | 
			
		||||
 | 
			
		||||
        short_entry = (f'[{COLOR.GREY}{date}{COLOR.RESET}|>'
 | 
			
		||||
        short_entry = (f'[{Color.GREY}{date}{Color.RESET}|>'
 | 
			
		||||
                       f'{self.severity_to_color[record.levelname]}{record.module}:'
 | 
			
		||||
                       f'{record.levelname.lower()}{COLOR.RESET}] {short_message}'
 | 
			
		||||
                       f'{trace}')
 | 
			
		||||
                       f'{record.levelname.lower()}{Color.RESET}] {short_message}')
 | 
			
		||||
        long_entry = (f'[{date}|>{record.module}:{record.levelname.lower()}] '
 | 
			
		||||
                      f'{long_message}{trace}')
 | 
			
		||||
                      f'{long_message}')
 | 
			
		||||
        return short_entry, long_entry
 | 
			
		||||
 | 
			
		||||
    def trim(self, value):
 | 
			
		||||
@@ -114,12 +90,8 @@ class TFWLogFormatter(Formatter):
 | 
			
		||||
            return value_str if len(value_str) <= self.limit else f'{value_str[:self.limit]}...'
 | 
			
		||||
        return value
 | 
			
		||||
 | 
			
		||||
    @staticmethod
 | 
			
		||||
    def fetch_exception_origin(trace):
 | 
			
		||||
        return deque(walk_tb(trace), maxlen=1).pop()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class TFWLogWhitelistFilter(Filter):
 | 
			
		||||
class WhitelistFilter(Filter):
 | 
			
		||||
    def __init__(self, names):
 | 
			
		||||
        self.names = names
 | 
			
		||||
        super().__init__()
 | 
			
		||||
@@ -128,7 +100,7 @@ class TFWLogWhitelistFilter(Filter):
 | 
			
		||||
        return record.module in self.names
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class TFWLogBlacklistFilter(Filter):
 | 
			
		||||
class BlacklistFilter(Filter):
 | 
			
		||||
    def __init__(self, names):
 | 
			
		||||
        self.names = names
 | 
			
		||||
        super().__init__()
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user