python log 日志记录

本文深入解析Python logging模块的使用方法,通过简洁的代码示例展示如何轻松实现日志记录功能,包括日志对象创建、处理器设置、格式器配置以及日志级别的设定,帮助开发者构建高效、灵活的日志系统。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python的logging秉承了python一贯清爽的风格,短短几行代码就能实现日志记录。
Python代码  收藏代码
  1. # -*- coding: utf-8 -*-  
  2. import logging

  3. logger = logging.getLogger()  
  4. #set loghandler  
  5. file = logging.FileHandler("qqxml.log")  
  6. logger.addHandler(file)  
  7. #set formater  
  8. #formatter = logging.Formatter("%(asctime)s %(levelname)s %(message)s")  
  9. formatter = logging.Formatter("%(asctime)s %(levelname)s %(message)s")  
  10. file.setFormatter(formatter)   
  11. #set log level  
  12. logger.setLevel(logging.NOTSET)  
  13.   
  14.   
  15.   
  16. for i in range(0,10):  
  17.     logger.info(str(i))  

有了日志对象,输出就非常简单了:

    logger.error(message)
    logger.info(message)

第4行生成一个日志对象,可以带一个名字,可以缺省。
第5行生成一个Handler。logging支持许多Handler,象FileHandler, SocketHandler, SMTPHandler等,我由于要写文件就使用了FileHandler。logfile是一个全局变量,它就是一个文件名,如:’crawl.log’。

第6行生成一个格式器,用于规范日志的输出格式。如果没有这行代码,那么缺省的格式就是:”%(message)s”。也就是写日志时,信息是什么日志中就是什么,没有日期,没有信息级别等信息。logging支持许多种替换值,详细请看Formatter的文档说明。这里有三项:时间,信息级别,日志信息。

第7行将格式器设置到处理器上。
第8行将处理器加到日志对象上。

第9行设置日志信息输出的级别。logging提供多种级别的日志信息,如:NOTSET, DEBUG, INFO, WARNING, ERROR, CRITICAL等。每个级别都对应一个数值。如果不执行此句,缺省为30(WARNING)。可以执行:logging.getLevelName(logger.getEffectiveLevel())来查看缺省的日志级别。日志对象对于不同的级别信息提供不同的函数进行输出,如:info(), error(), debug()等。当写入日志时,小于指定级别的信息将被忽略。因此为了输出想要的日志级别一定要设置好此参数。这里我设为NOTSET(值为0),也就是想输出所有信息。


### Python 日志记录模块 (Logging Module) 的基本用法 Python 中的日志记录模块 `logging` 提供了一种灵活的方式来跟踪事件的发生情况,这对于调试程序和监控运行时状态非常有用。以下是关于如何配置并使用该模块的一些基础示例。 #### 配置日志记录器的基础设置 为了启用日志功能,通常会调用 `basicConfig()` 方法来定义日志的基本参数。下面是一个简单的例子: ```python import logging logging.basicConfig( format='%(asctime)s %(levelname)-8s %(message)s', level=logging.DEBUG, datefmt='%Y-%m-%d %H:%M:%S' ) logging.debug('这是一个 DEBUG 级别的消息') logging.info('这是一个 INFO 级别的消息') logging.warning('这是一个 WARNING 级别的消息') logging.error('这是一个 ERROR 级别的消息') logging.critical('这是一个 CRITICAL 级别的消息') ``` 上述代码设置了日志的消息格式以及最低的日志级别为 `DEBUG`[^1]。这意味着所有级别的日志都会被打印出来,包括 `DEBUG`, `INFO`, `WARNING`, `ERROR`, 和 `CRITICAL`。 #### 自定义日志输出到文件 除了将日志输出至控制台外,还可以将其写入文件以便后续分析或存档。通过修改 `basicConfig()` 参数可以实现这一点: ```python import logging logging.basicConfig( filename='app.log', filemode='w', format='%(name)s - %(levelname)s - %(message)s', level=logging.WARNING ) logging.warning('这是警告信息') logging.error('这是错误信息') ``` 在这个例子中,所有的日志都将保存在一个名为 `app.log` 的文件里,并且只会有 `WARNING` 及更高级别的日志条目会被记录下来[^2]。 #### 创建多个 Logger 实例 对于较大的项目来说,可能需要创建不同的 logger 来区分各个组件或者子系统的日志。可以通过如下方式完成这一需求: ```python logger_a = logging.getLogger('moduleA') logger_b = logging.getLogger('moduleB') handler = logging.FileHandler('mylog.log') formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') handler.setFormatter(formatter) logger_a.addHandler(handler) logger_b.addHandler(handler) logger_a.setLevel(logging.ERROR) logger_b.setLevel(logging.INFO) logger_a.error('来自 moduleA 的错误报告') logger_b.info('来自 moduleB 的一般通知') ``` 这里展示了如何针对不同部分设定独立的日志处理器与等级阈值。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值