python logging模块之handlers的使用教程
一、handlers是什么?
- logging模块中包含的类
- 用来自定义日志对象的规则(比如:设置日志输出格式、等级等)
- 常用3个子类:StreamHandler、FileHandler、TimedRotatingFileHandler
二、handlers基础应用
2.1 StreamHandler 控制台输出日志
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
import logging#创建一个logger日志对象
logger = logging.getLogger('test_logger')
logger.setLevel(logging.DEBUG) #设置默认的日志级别#创建日志格式对象
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')#创建StreamHandler对象
sh = logging.StreamHandler()
#StreamHandler对象自定义日志级别
sh.setLevel(logging.DEBUG)
#StreamHandler对象自定义日志格式
sh.setFormatter(formatter)logger.addHandler(sh) #logger日志对象加载StreamHandler对象
#日志输出
logger.info('newdream')
上面代码执行后,会在控制台输出日志信息。
2.2 FileHandler 日志输出到文件
import logging#创建一个logger日志对象
logger = logging.getLogger('test_logger')
logger.setLevel(logging.DEBUG) #设置默认的日志级别#创建日志格式对象
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')#创建FileHandler对象
fh = logging.FileHandler('test.log')
#FileHandler对象自定义日志级别
fh.setLevel(logging.DEBUG)
#FileHandler对象自定义日志格式
fh.setFormatter(formatter)logger.addHandler(fh) #logger日志对象加载FileHandler对象
#日志输出
logger.info('newdream')
上面代码执行后,控制台不会输出日志信息,而会在当前文件夹新建一个test.log日志文件进行日志记录。
2.3 TimedRotatingFileHandler 日志分割
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
import logging
from logging import handlers#创建一个logger日志对象
logger = logging.getLogger('test_logger')
logger.setLevel(logging.DEBUG) #设置默认的日志级别#创建日志格式对象
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')#创建TimedRotatingFileHandler对象
rh = handlers.TimedRotatingFileHandler("test.log", when='S', interval=1, backupCount=5)
#TimedRotatingFileHandler对象自定义日志级别
rh.setLevel(logging.DEBUG)
#TimedRotatingFileHandler对象自定义日志级别
rh.suffix = "%Y_%m_%d_%H_%M_%S.log"
#TimedRotatingFileHandler对象自定义日志格式
rh.setFormatter(formatter)logger.addHandler(rh) #logger日志对象加载TimedRotatingFileHandler对象
#日志输出
logger.info('newdream')
上面代码执行后,控制台不会输出日志信息,而会在当前文件夹新建一个 test_年_月_日_时_分_秒.log 日志文件进行日志记录。
在使用TimedRotatingFileHandler创建对象时,它的构造函数定义如下:
TimedRotatingFileHandler(filename [,when [,interval [,backupCount]]])
filename:是输出日志文件名的前缀,比如log/myapp.log
when:按什么日期格式切分,接收指定字符串参数,接收的值如下:
“S”: Seconds
“M”: Minutes
“H”: Hours
“D”: Days
“W”: Week day (0=Monday)
“midnight”: Roll over at midnight
interval 是指等待多少个单位when的时间后,Logger会自动重建文件,这个文件的创建取决于filename+suffix,若这个文件跟之前的文件有重名,则会自动覆盖掉以前的文件,所以有些情况suffix要定义不能因为when而重复。
backupCount 是保留日志个数。默认的0是不会自动删除掉日志。若设为5,则在文件的创建过程中库会判断是否有超过这个5,若超过,则会从最先创建的开始删除。
三、小结
以上的日志实例为了让读者更清晰的操作和理解,分开代码单独实现
在 2.3 中 如果想实现看是否达到5个日志就删除的效果,可以把日志用循环输出,如下:
while True:logger.info('newdream')
三种handlers日志可以共同使用,都是独立的handler对象,但一般 FileHandler 和 TimedRotatingFileHandler 不会同时使用。
python logging模块之handlers的使用教程相关推荐
- Python logging模块切分和轮转日志
Python logging模块切分和轮转日志 logging 模块可以实现日志的输出和写入文件,但实际工作中,对于日志是使用不仅限于输出那么简单. logging基本使用参考:https://blo ...
- Python logging模块的基本使用
Python logging模块的基本使用 logging 模块是 Python 内置的标准模块,用于输出代码日志. 一.logging 模块简介 在工作中,运行的代码量是非常大的,为了更方便的管理代 ...
- python调用微信客户端_python模拟微信客户端打开链接Python Logging 模块研究
背景 在一个新的项目里面加入了日志功能,想自己写一个,但是一个偶然的机会,通过google发现Python内建了一个非常强大的日志(log)模块:logging.粗略的研究了一下,下面是我的一些心得札 ...
- python logging模块-写日志、log回滚
python包/模块,专栏总目录: 1.python自定义模块 2.python模块调用顺序 3.python logging模块 4.python定义跨模块的全局变量 1.logging模块简介 l ...
- 关于使用python logging模块的几点总结
关于使用python logging模块的几点总结 使用python的标准日志模块logging可以非常方便地记录日志.Python日志系统非常丰富.添加结构化或非结构化日志输出到python代码,写 ...
- python logging模块使用
python logging模块使用 logging模块 日志记录的重要性 在开发过程中,我们可以printf或者Debug来排查问题. 但是在生产环境中(黑盒环境)出现问题,我们并不能知道在运行的环 ...
- python logging模块使用_python logging模块使用
近来再弄一个小项目,已经到收尾阶段了.希望加入写log机制来增加程序出错后的判断分析.尝试使用了python logging模块. #-*- coding:utf-8 -*- importloggin ...
- python logging模块使用教程
格式化配置: logging.basicConfig(level=logging.INFO, format='%(asctime)s %(levelname)s %(filename)s [%(lin ...
- python logging模块的作用_Python 日志模块logging分析及使用-2
本文作为Python日志模块的补充,主要介绍日志回滚RotatingFileHandler和TimedRotatingFileHandler的使用,以及其所带来的问题.Logger对象的日志等级是如何 ...
最新文章
- pandas对dataframe的数据列进行随机抽样(Random Sample of Columns)、使用sample函数进行数据列随机抽样
- 设计模式-简单工厂模式
- html取 输入框中的值,jquery获取input输入框中的值
- 实现Singleton 模式——七种实现方式
- H5 input type=“search“ 不显示搜索 解决方法
- int 转CString
- linux 计时程序,Linux下使用clock_gettime给程序计时
- ServletContextListener 和HttpSessionListener 的自我理解
- (继承及其访问限定符)(派生类及其默认成员函数)(赋值兼容规则)
- 如何使用计算机硬件开关网络,笔记本无线网络开关介绍 怎么正确使用开关控制?...
- JAVA 用集合相关知识打印超市小票
- 永磁同步电机PMSM启动Simulink建模与仿真
- 声声入耳:音频新体验
- SpringBoot返回date日期格式化,解决返回为TIMESTAMP时间戳格式或8小时时间差
- 计算机组装实验vr,教你如何组装一台能玩VR及54K游戏的电脑
- 失眠是怎么回事?睡眠障碍的诊断与治疗
- 【综合实训】图书管理系统——需求规格说明书
- 如何使用几何体画人体结构?几何体画人体结构技巧!
- 【vue】详情页数据请求
- MySQL Error 1236处理