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

[复制链接]
2686|2
 楼主| onlycook 发表于 2024-5-14 10:00 | 显示全部楼层 |阅读模式
如何在自定义的日志函数中实现日志级别(如DEBUG、INFO、WARNING、ERROR等)?如何让调用者能够根据需要调整日志级别?
呐咯密密 发表于 2024-5-17 13:34 | 显示全部楼层
  1. import logging

  2. def setup_custom_logger(name, log_level):
  3.     """
  4.     创建并配置自定义日志器。
  5.    
  6.     :param name: 日志器的名称
  7.     :param log_level: 日志级别,如logging.DEBUG, logging.INFO等
  8.     :return: 配置好的日志器实例
  9.     """
  10.     # 创建日志器
  11.     logger = logging.getLogger(name)
  12.     logger.setLevel(log_level)
  13.    
  14.     # 创建处理器:这里以控制台处理器为例
  15.     stream_handler = logging.StreamHandler()
  16.     stream_handler.setLevel(log_level)  # 处理器级别应与日志器级别相同或更严格
  17.    
  18.     # 定义日志格式
  19.     formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
  20.     stream_handler.setFormatter(formatter)
  21.    
  22.     # 添加处理器到日志器
  23.     logger.addHandler(stream_handler)
  24.    
  25.     return logger

  26. def custom_log(logger, log_level, message):
  27.     """
  28.     自定义日志函数,根据传入的日志级别记录日志。
  29.    
  30.     :param logger: 日志器实例
  31.     :param log_level: 日志级别
  32.     :param message: 日志消息
  33.     """
  34.     if log_level == logging.DEBUG:
  35.         logger.debug(message)
  36.     elif log_level == logging.INFO:
  37.         logger.info(message)
  38.     elif log_level == logging.WARNING:
  39.         logger.warning(message)
  40.     elif log_level == logging.ERROR:
  41.         logger.error(message)
  42.     elif log_level == logging.CRITICAL:
  43.         logger.critical(message)
  44.     else:
  45.         raise ValueError("Invalid log level")

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

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


亚瑟 发表于 2024-5-24 22:01 | 显示全部楼层
应该会有大佬开源的库吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

496

主题

2185

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部