日志记录log

只需要调用一次init_log函数来初始化日志配置即可。在代码中,init_log函数会创建一个logger对象,并添加文件处理器和控制台处理器,然后设置日志级别。之后,您可以通过logger对象来记录日志信息。
在调用init_log函数之后,您可以在需要记录日志的地方使用logger对象的不同方法来记录不同级别的日志,如logger.debug(), logger.info(), logger.warning(), logger.error()等。

import logging
import os
import logging.handlers
def init_log(logger_name, log_file_path, log_level=20):
    '''
    CRITICAL(50): 严重错误,表示程序可能无法继续执行。
    ERROR(40): 错误,但是程序仍然可以继续执行。
    WARNING(30): 警告信息,表示程序遇到了一些不正常的情况,但是仍然可以继续执行。
    INFO(20): 信息性消息,用于记录程序的运行状态或关键事件。
    DEBUG(10): 调试信息,用于详细记录程序的运行过程,帮助开发者进行调试。
    NOTSET(0): 表示未设置日志级别,会继承上层的日志级别。
    :param logger_name:
    :param log_file_path:
    :param log_level:
    :return:
    '''
    # 创建logger对象
    logger = logging.getLogger(logger_name)
    # 创建日志目录
    log_dir = os.path.dirname(log_file_path)
    if not os.path.exists(log_dir):
        os.makedirs(log_dir)
    # 避免重复添加处理器
    if len(logger.handlers) == 0:
        # 创建文件处理器
        file_handler = logging.FileHandler(log_file_path, mode="a", encoding="utf-8")
        file_handler.setLevel(log_level)
        # 创建控制台处理器
        console_handler = logging.StreamHandler()
        console_handler.setLevel(log_level)
        # 创建格式化器
        formatter = logging.Formatter(
            fmt='%(asctime)s - %(levelname)s - Model:%(filename)s - Fun:%(funcName)s - Message:%(message)s - Line:%(lineno)d')
        # 添加处理器和格式化器
        file_handler.setFormatter(formatter)
        console_handler.setFormatter(formatter)
        logger.addHandler(file_handler)
        logger.addHandler(console_handler)
        # 设置日志级别
        logger.setLevel(log_level)
    return logger
logger = init_log("MyLogger", "log/mylog.log", log_level=10)  # 修改日志文件路径和日志级别为20
print('123')
logger.info("This is an information log.")  # 记录一条INFO级别的日志
print('44444444444')
logger.warning("This is a warning log.")  # 记录一条WARNING级别的日志
print('55555')

  目录