|
|
|
|
|
|
|
import logging |
|
|
|
LOG_FORMAT = '%(asctime)s - %(name)s - %(levelname)s - %(message)s' |
|
logging.basicConfig(level=logging.INFO, format=LOG_FORMAT) |
|
|
|
logger = logging.getLogger("common") |
|
|
|
trace_logger = logging.getLogger("traced") |
|
|
|
|
|
class Color: |
|
black = '\033[30m' |
|
red = '\033[31m' |
|
green = '\033[32m' |
|
orange = '\033[33m' |
|
blue = '\033[34m' |
|
purple = '\033[35m' |
|
cyan = '\033[36m' |
|
lightgrey = '\033[37m' |
|
darkgrey = '\033[90m' |
|
lightred = '\033[91m' |
|
lightgreen = '\033[92m' |
|
yellow = '\033[93m' |
|
lightblue = '\033[94m' |
|
pink = '\033[95m' |
|
lightcyan = '\033[96m' |
|
reset = '\033[0m' |
|
bold = '\033[01m' |
|
disable = '\033[02m' |
|
underline = '\033[04m' |
|
reverse = '\033[07m' |
|
strikethrough = '\033[09m' |
|
|
|
|
|
def color_log(value, color: str = Color.black, logger_: logging.Logger = logger, level: int = logging.INFO, hightlight_key=None): |
|
""" Colored value or highlight key in log. |
|
|
|
Args: |
|
value: |
|
color: Color |
|
hightlight_key: Color segment key. |
|
""" |
|
if hightlight_key is None: |
|
logger_.log(level, f"{color} {value} {Color.reset}") |
|
else: |
|
logger_.log(level, f"{color} {hightlight_key}: {Color.reset} {value}") |
|
|
|
|
|
def aworld_log(logger, color: str = Color.black, level: int = logging.INFO): |
|
"""Colored log style in the Aworld. |
|
|
|
Args: |
|
color: Default color set, different types of information can be set in different colors. |
|
level: Log level. |
|
""" |
|
def_color = color |
|
|
|
def decorator(value, color: str = None): |
|
|
|
if color: |
|
color_log(value, color, logger, level) |
|
else: |
|
color_log(value, def_color, logger, level) |
|
|
|
return decorator |
|
|
|
|
|
def init_logger(logger: logging.Logger): |
|
logger.debug = aworld_log(logger, color=Color.lightgrey, level=logging.DEBUG) |
|
logger.info = aworld_log(logger, color=Color.black, level=logging.INFO) |
|
logger.warning = aworld_log(logger, color=Color.orange, level=logging.WARNING) |
|
logger.warn = logger.warning |
|
logger.error = aworld_log(logger, color=Color.red, level=logging.ERROR) |
|
logger.fatal = logger.error |
|
|
|
|
|
init_logger(logger) |
|
init_logger(trace_logger) |
|
|