一、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的使用教程相关推荐

  1. Python logging模块切分和轮转日志

    Python logging模块切分和轮转日志 logging 模块可以实现日志的输出和写入文件,但实际工作中,对于日志是使用不仅限于输出那么简单. logging基本使用参考:https://blo ...

  2. Python logging模块的基本使用

    Python logging模块的基本使用 logging 模块是 Python 内置的标准模块,用于输出代码日志. 一.logging 模块简介 在工作中,运行的代码量是非常大的,为了更方便的管理代 ...

  3. python调用微信客户端_python模拟微信客户端打开链接Python Logging 模块研究

    背景 在一个新的项目里面加入了日志功能,想自己写一个,但是一个偶然的机会,通过google发现Python内建了一个非常强大的日志(log)模块:logging.粗略的研究了一下,下面是我的一些心得札 ...

  4. python logging模块-写日志、log回滚

    python包/模块,专栏总目录: 1.python自定义模块 2.python模块调用顺序 3.python logging模块 4.python定义跨模块的全局变量 1.logging模块简介 l ...

  5. 关于使用python logging模块的几点总结

    关于使用python logging模块的几点总结 使用python的标准日志模块logging可以非常方便地记录日志.Python日志系统非常丰富.添加结构化或非结构化日志输出到python代码,写 ...

  6. python logging模块使用

    python logging模块使用 logging模块 日志记录的重要性 在开发过程中,我们可以printf或者Debug来排查问题. 但是在生产环境中(黑盒环境)出现问题,我们并不能知道在运行的环 ...

  7. python logging模块使用_python logging模块使用

    近来再弄一个小项目,已经到收尾阶段了.希望加入写log机制来增加程序出错后的判断分析.尝试使用了python logging模块. #-*- coding:utf-8 -*- importloggin ...

  8. python logging模块使用教程

    格式化配置: logging.basicConfig(level=logging.INFO, format='%(asctime)s %(levelname)s %(filename)s [%(lin ...

  9. python logging模块的作用_Python 日志模块logging分析及使用-2

    本文作为Python日志模块的补充,主要介绍日志回滚RotatingFileHandler和TimedRotatingFileHandler的使用,以及其所带来的问题.Logger对象的日志等级是如何 ...

最新文章

  1. pandas对dataframe的数据列进行随机抽样(Random Sample of Columns)、使用sample函数进行数据列随机抽样
  2. 设计模式-简单工厂模式
  3. html取 输入框中的值,jquery获取input输入框中的值
  4. 实现Singleton 模式——七种实现方式
  5. H5 input type=“search“ 不显示搜索 解决方法
  6. int 转CString
  7. linux 计时程序,Linux下使用clock_gettime给程序计时
  8. ServletContextListener 和HttpSessionListener 的自我理解
  9. (继承及其访问限定符)(派生类及其默认成员函数)(赋值兼容规则)
  10. 如何使用计算机硬件开关网络,笔记本无线网络开关介绍 怎么正确使用开关控制?...
  11. JAVA 用集合相关知识打印超市小票
  12. 永磁同步电机PMSM启动Simulink建模与仿真
  13. 声声入耳:音频新体验
  14. SpringBoot返回date日期格式化,解决返回为TIMESTAMP时间戳格式或8小时时间差
  15. 计算机组装实验vr,教你如何组装一台能玩VR及54K游戏的电脑
  16. 失眠是怎么回事?睡眠障碍的诊断与治疗
  17. 【综合实训】图书管理系统——需求规格说明书
  18. 如何使用几何体画人体结构?几何体画人体结构技巧!
  19. 【vue】详情页数据请求
  20. MySQL Error 1236处理

热门文章

  1. 【2】基于zookeeper,quartz,rocketMQ实现集群化定时系统
  2. git 几种情况的回滚
  3. PHP初级学习之PHP文件
  4. 我的小作品(烂笔头)
  5. 最近为一个培训公司做的配置
  6. [转]卓越科技回应所谓的最牛,最受歧视的招聘
  7. 顺序表中有效元素的长度_408数据结构之顺序表进阶(1)
  8. 限制oracle数据库表的输出记录条数
  9. SAP 物料分类账常用表
  10. 用VB开发SAP接口程序