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()