logger日志封装
# -*- coding:utf-8 -*-
# @Time : 16/06/2023 2:42 pm
# @Author: Azure
# @File: logger_key.py
import os
import time
import logging
import colorlog
from config.path_config import LOG_DIR
def logger():
# 定义不同日志级别的颜色配置
log_colors_config = {
'DEBUG': 'cyan',
'INFO': 'green',
'WARNING': 'yellow',
'ERROR': 'red',
'CRITICAL': 'bold_red',
}
# 创建名logger对象
logger = logging.getLogger('CSP')
# 设置日志级别和logger默认级别
log_level = logging.DEBUG
logger.setLevel(log_level)
# 设置日志格式化字符串
log_format_file = '[%(asctime)s] [CSP] [%(filename)s -> %(funcName)s line:%(lineno)d] [%(levelname)s]: %(message)s'
log_format_console = '%(log_color)s[%(asctime)s] [CSP] [%(filename)s -> %(funcName)s line:%(lineno)d] [%(levelname)s]: %(message)s'
# 创建控制台日志处理程序
console_handler = logging.StreamHandler()
console_handler.setLevel(log_level) # 设置控制台日志处理程序的日志级别
console_formatter = colorlog.ColoredFormatter(fmt=log_format_console, datefmt='%Y-%m-%d %H:%M:%S',
log_colors=log_colors_config) # 创建彩色控制台日志格式化器
console_handler.setFormatter(console_formatter)
# 创建文件日志处理程序
log_file = os.path.join(LOG_DIR, f"test_log_{time.strftime('%Y-%m-%d_%H-%M')}.log")
file_handler = logging.FileHandler(log_file, mode='a', encoding="UTF-8-sig") # 文件日志处理程序
file_handler.setLevel(log_level) # 设置文件日志处理程序的日志级别
file_formatter = logging.Formatter(fmt=log_format_file, datefmt='%Y-%m-%d %H:%M:%S') # 创建文件日志格式化器
file_handler.setFormatter(file_formatter) # 设置文件日志处理程序的格式化器
if not logger.handlers: # 如果logger没有已添加的处理程序
logger.addHandler(console_handler) # 添加控制台日志处理程序
logger.addHandler(file_handler) # 添加文件日志处理程序
return logger # 返回配置好的logger对象
if __name__ == '__main__':
log = logger()
def pr():
log.debug('哈哈哈')
log.info('哈哈哈')
log.warning('哈哈哈')
log.error('哈哈哈')
pr()