python logger(记录器)

一、什么是 logger(记录器)?

  • logger(记录器)是 Python logging 模块的核心对象,用于产生日志
  • 你可以创建多个 logger,每个 logger 可以有不同的名字、日志级别、处理器(Handler)和格式(Formatter)。
  • logger 负责接收日志消息,并将其分发给一个或多个 Handler 进行实际输出。

二、logger 的常用方法

1. getLogger([name]) —— 创建或获取记录器

  • 作用:创建一个新的 logger,或获取一个已存在的 logger。
  • 参数
    • name:logger 的名字(字符串)。如果不传,返回根记录器(root logger)。
  • 示例
    logger1 = logging.getLogger()           # 获取根记录器
    logger2 = logging.getLogger('mylogger') # 获取名为'mylogger'的记录器
    

2. setLevel(level) —— 设置日志等级

  • 作用:设置 logger 的日志级别,只有大于等于该级别的日志才会被处理。
  • 参数level 可以是 logging.DEBUGlogging.INFO 等。
  • 示例
    logger.setLevel(logging.INFO)
    

3. addHandler(handler) —— 添加处理程序

  • 作用:为 logger 添加一个 Handler(处理器),决定日志输出到哪里、以什么格式输出。
  • 参数handler 是一个 Handler 对象,如 StreamHandlerFileHandler 等。
  • 示例
    handler = logging.StreamHandler()
    logger.addHandler(handler)
    

4. removeHandler(handler) —— 移除处理程序

  • 作用:从 logger 中移除一个 Handler。
  • 参数handler 是要移除的 Handler 对象。
  • 示例
    logger.removeHandler(handler)
    

三、logger 的使用流程

  1. 获取 loggergetLogger
  2. 设置日志级别setLevel
  3. 添加 HandleraddHandler),可设置不同的输出目标和格式
  4. 输出日志(如 logger.info()logger.error() 等)

四、你的代码详解

import logging

logger = logging.getLogger()
  • 这行代码获取了根记录器(root logger)。
  • 你可以用 logger 来输出日志,也可以为它添加 Handler、设置日志级别等。

五、logger 与 Handler 的关系

  • logger 负责产生日志,Handler 负责处理日志(如输出到文件、控制台等)。
  • 一个 logger 可以有多个 Handler,每个 Handler 可以有不同的输出目标和格式。

六、完整示例

import logging

# 1. 获取记录器
logger = logging.getLogger('mylogger')

# 2. 设置日志级别
logger.setLevel(logging.DEBUG)

# 3. 创建并添加 Handler
console_handler = logging.StreamHandler()
file_handler = logging.FileHandler('app.log', encoding='utf-8')

# 4. 设置不同格式
console_format = logging.Formatter('%(levelname)s: %(message)s')
file_format = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')

console_handler.setFormatter(console_format)
file_handler.setFormatter(file_format)

logger.addHandler(console_handler)
logger.addHandler(file_handler)

# 5. 输出日志
logger.info('普通信息')
logger.error('错误信息')

# 6. 移除 Handler
logger.removeHandler(console_handler)

七、总结

  • logger 是日志系统的核心,负责产生日志并分发给 Handler。
  • 通过 getLogger 获取 logger,通过 setLevel 设置级别,通过 addHandler/removeHandler 管理输出目标。
  • 灵活配置 logger 和 Handler,可以满足各种复杂的日志需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贵哥的编程之路(热爱分享 为后来者)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值