日志模块logging的笔记

本文详细介绍了Python内置的日志模块logging的使用方法,包括日志级别、格式化、输出到文件及高级用法。通过实例展示了如何配置日志记录器、处理器、过滤器和格式器,实现不同场景下的日志管理。

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

Python内置的日志模块logging
log日志
-记录程序运行状况,信息,错误,警告等信息,
-用于错误排查,系统运维

日志级别:
10 debug 调试,诊断
20 info 普通信息
30 warning 警告信息
40 error 错误信息
50 cirtical 危险信息,严重错误,程序无法继续运行

格式化:输出格式
规则 描述
%(asctime)s 日志事件发生的时间
%(levelname)s 该日志记录的日志级别
%(message)s 日志记录的文本内容
%(name)s 所使用的日志器名称,默认是’root’
%(pathname)s 调用日志记录函数的文件的全路径
%(filename)s 调用日志记录函数的文件
%(funcName)s 调用日志记录函数的函数名
%(lineno)d 调用日志记录函数的代码所在的行号

输出到文件:
设置一下filename,看源码

高级用法:输出到不同的地方
四大组件说明
Loggers(日志记录器) 提供程序直接使用的接口
Handlers(日志处理器) 将记录的日志发送到指定的位置
Filters(日志过滤器) 用于过滤特定的日志记录
Formatters(日志格式器) 用于控制日志信息的输出格式

一般使用步骤:
1.创建一个logger对象,设置全局等级
2.创建handler,决定把日志发到哪里(可以有多个),并设置其等级
3.创建输出格式,添加到handler
4.handler添加到logger

"""
logging模块的简单使用
"""
import logging
#日志级别
logging.basicConfig(
    level=30,  # 设置级别,根据级别显示
    format="%(asctime)s-%(levelname)s-%(message)s",  # 设置输出格式
    filename='E:/LearnPython/note1.log'  # 设置 日志文件路径,把日志写入该文件 ,没有则自动在控制台输出 
                    )
#写日志
logging.debug('This is a debug log')
logging.info('This is a info log')
logging.warning('This is a warning log')
logging.error('This is a error log')
logging.critical('This is a critical log')

"""
logging的高级用法,包含面向对象的思想
logger是一个日志器,用来记录日志,真正干活的是hander处理器,
它包括控制输出到文件的文件处理器和控制输出到控制台的StreamHandler,
handler上又可以添加formatter和filter,以便更精确的控制日志输出格式和方式
"""
import logging
# 1.创建一个logger,并给他起名字,一般用__name__
logger = logging.getLogger('%s_log' % __name__)
# 2.设置日志等级
logger.setLevel(logging.INFO)  # 这里是全局等级 不设置 默认是warning

# 3.创建一个handler对象,用于写入到日志文件
fh = logging.FileHandler('test.log', encoding='utf-8')
# 给处文件理器设置等级
fh.setLevel(logging.INFO)
# 创建一个handler对象,用于输出到控制台
ch = logging.StreamHandler()
#给控制台处理器设置等级
ch.setLevel(logging.WARNING)

# 4.设置格式,创建格式器对象
formatter = logging.Formatter(
'%(asctime)s - %(filename)s [line:%(lineno)d - %(levelname)s: %(message)s]'
)
# 往handler 添加格式
fh.setFormatter(formatter)
ch.setFormatter(formatter)

# 5.再往日志器logger上添加handler,日志器就做好了
logger.addHandler(ch)
logger.addHandler(fh)

# 然后记录日志,不同的处理器根据自身的设置,会对日志做不同的处理(以什么等级,输出到控制台还是写入文件,以什么格式写等等)
logger.info('我是一个普通信息!')
logger.warning('This is a warning log')

这两条信息都会写入文件tset.log, 只有下面一条会输出到控制台。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值