onlycook 发表于 2024-5-14 10:00

如何在自定义的日志函数中实现日志级别(如DEBUG、INFO、WARNING、ERROR等)?

如何在自定义的日志函数中实现日志级别(如DEBUG、INFO、WARNING、ERROR等)?如何让调用者能够根据需要调整日志级别?

呐咯密密 发表于 2024-5-17 13:34

import logging

def setup_custom_logger(name, log_level):
    """
    创建并配置自定义日志器。
   
    :param name: 日志器的名称
    :param log_level: 日志级别,如logging.DEBUG, logging.INFO等
    :return: 配置好的日志器实例
    """
    # 创建日志器
    logger = logging.getLogger(name)
    logger.setLevel(log_level)
   
    # 创建处理器:这里以控制台处理器为例
    stream_handler = logging.StreamHandler()
    stream_handler.setLevel(log_level)# 处理器级别应与日志器级别相同或更严格
   
    # 定义日志格式
    formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
    stream_handler.setFormatter(formatter)
   
    # 添加处理器到日志器
    logger.addHandler(stream_handler)
   
    return logger

def custom_log(logger, log_level, message):
    """
    自定义日志函数,根据传入的日志级别记录日志。
   
    :param logger: 日志器实例
    :param log_level: 日志级别
    :param message: 日志消息
    """
    if log_level == logging.DEBUG:
      logger.debug(message)
    elif log_level == logging.INFO:
      logger.info(message)
    elif log_level == logging.WARNING:
      logger.warning(message)
    elif log_level == logging.ERROR:
      logger.error(message)
    elif log_level == logging.CRITICAL:
      logger.critical(message)
    else:
      raise ValueError("Invalid log level")

# 使用示例
logger = setup_custom_logger('MyLogger', logging.DEBUG)

custom_log(logger, logging.DEBUG, "This is a debug message")
custom_log(logger, logging.INFO, "This is an info message")
custom_log(logger, logging.WARNING, "This is a warning message")
custom_log(logger, logging.ERROR, "This is an error message")
custom_log(logger, logging.CRITICAL, "This is a critical message")

亚瑟 发表于 2024-5-24 22:01

应该会有大佬开源的库吧
页: [1]
查看完整版本: 如何在自定义的日志函数中实现日志级别(如DEBUG、INFO、WARNING、ERROR等)?