『无为则无心』Python日志 — 66、将日志信息保存到文件中
2022/3/5 11:15:03
本文主要是介绍『无为则无心』Python日志 — 66、将日志信息保存到文件中,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录- 1、把日志信息保存到文件中
- 2、拓展
- (1)观察代码
- (2)提出问题
- (3)问题说明
1、把日志信息保存到文件中
代码如下所示:
""" logging模块是Python的内置模块,不需要安装。 步骤: 1,创建一个把日志信息保存到文件中的处理器FileHandler 2,把文件处理器添加到logger中 3,把格式器传入到文件处理器中 """ # 导入logging模块 import logging # 创建一个日志器,就是一个logger对象 logger = logging.getLogger('logger') # 设置logger输入级别 logger.setLevel(logging.DEBUG) # 创建日志格式器 formator = logging.Formatter(fmt="%(asctime)s [ %(filename)s ] %(lineno)d行 | [ %(levelname)s ] | [%(message)s]", datefmt="%Y/%m/%d/%X") # 创建一个输出的处理器,让它输入到控制台 sh = logging.StreamHandler() # 1.创建一个把日志信息存储到文件中的处理器 # 要加编码,不然后可能会乱码 fh = logging.FileHandler("../log/test_log_01.log", encoding="utf-8") # 把输出处理器添加到日志器中 logger.addHandler(sh) # 给处理器添加格式器 sh.setFormatter(formator) # 2.把文件处理器,加载到logger中 logger.addHandler(fh) # 3.给文件处理器添加格式器 fh.setFormatter(formator) # 输出日志信息 logger.debug('输出debug级别的日志') logger.info('输出info级别的日志') logger.warning('输出warning级别的日志') logger.error('输出error级别的日志') logger.critical('输出critical级别的日志')
2、拓展
(1)观察代码
看下面一段代码说明问题。
# 主要看标号1,2,3 # 导入logging模块 import logging # 创建一个日志器,就是一个logger对象 logger = logging.getLogger('logger') # 1.设置logger日志器的日志级别为DEBUG logger.setLevel(logging.ERROR) # 定义日志处理器File_handler File_handler = logging.FileHandler('../log/all.log', encoding="utf-8") # 2.给日志处理器File_handler设置日志级别 File_handler.setLevel(logging.WARNING) # 给处理器传入格式器 File_handler.setFormatter(logging.Formatter("%(asctime)s - %(levelname)s - %(message)s")) # 定义日志处理器console_handler console_handler = logging.StreamHandler() # 3.设置处理器日志级别 console_handler.setLevel(logging.DEBUG) # 给处理器传入格式器 console_handler.setFormatter(logging.Formatter("%(asctime)s - %(levelname)s - %(filename)s[:%(lineno)d] - %(message)s")) # 把两个处理器添加到日志器中 logger.addHandler(File_handler) logger.addHandler(console_handler) logger.debug('debug message') logger.info('info message') logger.warning('warning message') logger.error('error message') logger.critical('critical message')
运行结果:
log文件中日志:
2021-01-16 23:17:14,149 - ERROR - demo_log3.py[:33] - error message 2021-01-16 23:17:14,150 - CRITICAL - demo_log3.py[:34] - critical message
控制台中的日志:
2021-01-16 23:17:14,149 - ERROR - error message 2021-01-16 23:17:14,150 - CRITICAL - critical message
(2)提出问题
在上面代码中:
logger
日志器设置的日志级别是ERROR。
logger.setLevel(logging.ERROR)
- 文件日志处理器
File_handler
设置的日志级别是WARNING。
File_handler.setLevel(logging.WARNING)
- 控制台日志处理器
console_handler
设置的日志级别是DEBUG。
console_handler.setLevel(logging.DEBUG)
那么产生疑问:
- 已经对日志器设置了输出级别,为什么还要对日志处理器的日志最低输出级别进行设置呢?
- 日志器(
logger
)和日志处理器(handler
)中设置的日志输出级别,谁的优先级更高?
(3)问题说明
- 无论是
logger
实例还是handler
实例,它们都可以设置日志的最低输出级别。 logger
日志器设置的日志输出等级优先级更高,其内部的处理器就不会接收到低于该级别的日志信息。
如上面的示例,logger
日志器设置的输出级别为ERROR,那么File_handler
和console_handler
只能接收到ERROR和以上级别的日志信息。
所以看上面示例的结果可以看出,File_handler
和console_handler
处理器都只输出了ERROR级别以上的日志。
因此在设置各handler
实例输出级别时需要小心谨慎。- 在实际的应用工作应用过程中,可以在日志器(
logger
)和日志处理器(handler
)中设置不同的日志级别,相互配合,实现按业务需求过滤日志。
这篇关于『无为则无心』Python日志 — 66、将日志信息保存到文件中的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南
- 2024-11-16`PyMuPDF4LLM`:提取PDF数据的神器
- 2024-11-16四种数据科学Web界面框架快速对比:Rio、Reflex、Streamlit和Plotly Dash
- 2024-11-14获取参数学习:Python编程入门教程
- 2024-11-14Python编程基础入门