Lib.utils.Logger
日志记录器
1""" 2日志记录器 3""" 4 5import logging 6import logging.handlers as handlers 7import sys 8from ..constants import * 9 10import coloredlogs 11 12 13logger: logging.Logger = None 14 15 16def init(logs_path: str = LOGS_PATH, logger_level: int = logging.INFO): 17 """ 18 初始化日志记录器 19 Args: 20 @param logs_path: 21 @param logger_level: 22 Returns: 23 None 24 """ 25 global logger 26 27 if logger is not None: 28 return logger 29 # 日志颜色 30 log_colors = { 31 "DEBUG": "white", 32 "INFO": "green", 33 "WARNING": "yellow", 34 "ERROR": "red", 35 "CRITICAL": "bold_red", 36 } 37 log_field_styles = { 38 "asctime": {"color": "green"}, 39 "hostname": {"color": "magenta"}, 40 "levelname": {"color": "white"} 41 } 42 # 日志格式 43 fmt = "[%(asctime)s] [%(filename)s] [%(levelname)s]: %(message)s" 44 # 设置日志 45 coloredlogs.install(isatty=True, stream=sys.stdout, field_styles=log_field_styles, fmt=fmt, colors=log_colors) 46 47 # 设置文件日志 48 logger = logging.getLogger() 49 50 logger.setLevel(logger_level) 51 coloredlogs.set_level(logger_level) 52 53 log_name = "latest.log" 54 log_path = os.path.join(logs_path, log_name) 55 # 如果指定路径不存在,则尝试创建路径 56 if not os.path.exists(logs_path): 57 os.makedirs(logs_path) 58 59 def namer(filename): 60 """ 61 生成文件名 62 Args: 63 filename: 文件名 64 Returns: 65 文件名 66 """ 67 dir_name, base_name = os.path.split(filename) 68 base_name = base_name.replace(log_name + '.', "") 69 rotation_filename = os.path.join(dir_name, base_name) 70 return rotation_filename 71 72 file_handler = handlers.TimedRotatingFileHandler(log_path, when="MIDNIGHT", encoding="utf-8") 73 file_handler.namer = namer 74 file_handler.suffix = "%Y-%m-%d.log" 75 file_handler.setFormatter(logging.Formatter(fmt)) 76 logger.addHandler(file_handler) 77 return logger 78 79 80def set_logger_level(level: int): 81 """ 82 设置日志级别 83 Args: 84 level: 日志级别 85 Returns: 86 None 87 """ 88 global logger 89 logger.setLevel(level) 90 coloredlogs.set_level(level) 91 92 93def get_logger(): 94 """ 95 获取日志记录器 96 Returns: 97 Logger 98 """ 99 if not logger: 100 init() 101 return logger
logger: logging.Logger =
<RootLogger root (INFO)>
def
init(logs_path: str = '/home/MuRainBot2/logs', logger_level: int = 20):
17def init(logs_path: str = LOGS_PATH, logger_level: int = logging.INFO): 18 """ 19 初始化日志记录器 20 Args: 21 @param logs_path: 22 @param logger_level: 23 Returns: 24 None 25 """ 26 global logger 27 28 if logger is not None: 29 return logger 30 # 日志颜色 31 log_colors = { 32 "DEBUG": "white", 33 "INFO": "green", 34 "WARNING": "yellow", 35 "ERROR": "red", 36 "CRITICAL": "bold_red", 37 } 38 log_field_styles = { 39 "asctime": {"color": "green"}, 40 "hostname": {"color": "magenta"}, 41 "levelname": {"color": "white"} 42 } 43 # 日志格式 44 fmt = "[%(asctime)s] [%(filename)s] [%(levelname)s]: %(message)s" 45 # 设置日志 46 coloredlogs.install(isatty=True, stream=sys.stdout, field_styles=log_field_styles, fmt=fmt, colors=log_colors) 47 48 # 设置文件日志 49 logger = logging.getLogger() 50 51 logger.setLevel(logger_level) 52 coloredlogs.set_level(logger_level) 53 54 log_name = "latest.log" 55 log_path = os.path.join(logs_path, log_name) 56 # 如果指定路径不存在,则尝试创建路径 57 if not os.path.exists(logs_path): 58 os.makedirs(logs_path) 59 60 def namer(filename): 61 """ 62 生成文件名 63 Args: 64 filename: 文件名 65 Returns: 66 文件名 67 """ 68 dir_name, base_name = os.path.split(filename) 69 base_name = base_name.replace(log_name + '.', "") 70 rotation_filename = os.path.join(dir_name, base_name) 71 return rotation_filename 72 73 file_handler = handlers.TimedRotatingFileHandler(log_path, when="MIDNIGHT", encoding="utf-8") 74 file_handler.namer = namer 75 file_handler.suffix = "%Y-%m-%d.log" 76 file_handler.setFormatter(logging.Formatter(fmt)) 77 logger.addHandler(file_handler) 78 return logger
初始化日志记录器
Arguments:
- @param logs_path:
- @param logger_level:
Returns:
None
def
set_logger_level(level: int):
81def set_logger_level(level: int): 82 """ 83 设置日志级别 84 Args: 85 level: 日志级别 86 Returns: 87 None 88 """ 89 global logger 90 logger.setLevel(level) 91 coloredlogs.set_level(level)
设置日志级别
Arguments:
- level: 日志级别
Returns:
None
def
get_logger():
94def get_logger(): 95 """ 96 获取日志记录器 97 Returns: 98 Logger 99 """ 100 if not logger: 101 init() 102 return logger
获取日志记录器
Returns:
Logger