Python标准库中的logging

本文详细介绍了Python标准库中的logging模块,包括其基本用法、日志级别、打印格式参数、日志输出到文件以及日志回滚功能。通过示例代码展示了如何创建logger实例,设置不同级别的日志,以及如何将日志输出到指定文件并实现按大小和时间进行日志文件的滚动。

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

1、logging的介绍

logging是Python标准库中记录常用的记录日志库,通过logging模块存储各种格式的日志,主要用于输出运行日志,可以设置输出日志的等级、日志保存路径、日志文件回滚等。

2、简单用法示例

首先创建一个logger.py的文件,其里面的代码如下所示:

import logging
 
# 1.创建一个logger实例,并且logger实例的名称命名为“single info”,设定的严重级别为DEBUG
LOGGER = logging.getLogger('single info')
LOGGER.setLevel(logging.DEBUG)
 
# 2.创建一个handler,这个主要用于控制台输出日志,并且设定严重级别
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)
 
# 3.创建handler的输出格式(formatter)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
 
# 4.将for
### Python标准库`logging`的用法 #### 基本配置与初始化 为了开始使用`logging`模块,通常会先进行基础配置。这可以通过调用`basicConfig()`函数完成,该函数允许指定日志级别、格式以及输出目标等参数[^5]。 ```python import logging logging.basicConfig( format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', level=logging.DEBUG, filename='app.log', # 日志保存至文件 filemode='w' # 覆盖写入方式 ) ``` 上述代码设置了全局的日志记录行为,包括采用特定的时间戳格式化字符串作为前缀,并指定了最低的日志等级为DEBUG,意味着所有类型的日志都将被处理并存储到名为`app.log`的文件中,每次运行程序时都会清空旧的日志重新开始记录。 #### 创建自定义Logger对象 除了依赖于默认创建的根logger外,还可以通过`getLogger(name)`获取一个具有唯一名称的空间下的logger实例,以便更精细地控制不同组件产生的日志信息[^1]。 ```python logger = logging.getLogger('my_module') logger.setLevel(logging.INFO) # 添加handler和formatter以进一步定制log输出形式 console_handler = logging.StreamHandler() formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s') console_handler.setFormatter(formatter) logger.addHandler(console_handler) ``` 这里展示了如何构建一个新的logger实例,并为其附加了一个流处理器(stream handler),使得日志不仅能够打印到终端上,而且可以根据需求调整显示样式。 #### 发布不同类型的消息 一旦完成了必要的准备工作之后,就可以利用logger发出各种级别的通知了——从最轻微的信息提示直到严重的错误报告[^2]。 ```python try: result = divide_by_zero() # 可能引发异常的操作 except ZeroDivisionError as e: logger.error(f'Division by zero occurred: {e}') else: logger.info('Operation completed successfully.') finally: logger.debug('Cleaning up resources...') ``` 这段示例演示了当遇到除零错误时发送一条带有上下文描述性的ERROR级消息;而在正常情况下则仅需简单告知操作已完成即可;无论成功与否,在结束阶段总是执行清理工作的DEBUG级说明。 #### 配置文件支持 对于较为复杂的项目而言,直接在源码里硬编码所有的设定显然不够灵活高效。因此推荐借助外部配置文件来简化维护工作量。例如,可以编写`.ini`或者`.conf`样式的纯文本档来集中管理各个handlers及其属性。 ```python import logging.config logging.config.fileConfig('logging.conf') # 使用已命名的logger而不是root specific_logger = logging.getLogger('special.module.name') specific_logger.debug('Debugging information from special module.') ``` 这种方法的好处在于无需修改任何Python脚本就能轻松更改整个系统的日志策略,非常适合大型团队协作开发环境。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值