[bigdata-078] python3 logging 的示例 TimedRotatingFileHandler和RotatingFileHandler 基于时间切分和基于文件大小切分
来源:互联网 发布:win7仿mac os x主题包 编辑:程序博客网 时间:2024/06/09 09:10
1. 官网文档
https://docs.python.org/3/library/logging.html
2. logger不会直接实例化。而是以logging.getLogger(name)方式实例化,如果多次以同一个name获取logger,那么返回的都是同一个logger。
name可以是形如foo.bar.baz,bar是foo的子logger,因此,建议以类似python包的结构,组织多种logger。推荐 logging.getLogger(__name__)
3. 对log,通常有一种想要的效果:log按天切分,每天一个log文件,保留三天内的log,过期删除。
3.1 使用TimedRotatingFileHandler
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是不会自动删除掉日志。若设3,则在文件的创建过程中
注意:filehanlder.suffix的格式必须这么写,才能自动删除旧文件,如果设定是天,就必须写成“%Y-%m-%d.log”,写成其他格式会导致删除旧文件不生效。这个配置在源码里能看出来,但是在官方文档并没有说明这一点!!!!!!!!!!
3.2 RotatingFileHandler基于文件大小切分
https://docs.python.org/3/library/logging.html
2. logger不会直接实例化。而是以logging.getLogger(name)方式实例化,如果多次以同一个name获取logger,那么返回的都是同一个logger。
name可以是形如foo.bar.baz,bar是foo的子logger,因此,建议以类似python包的结构,组织多种logger。推荐 logging.getLogger(__name__)
3. 对log,通常有一种想要的效果:log按天切分,每天一个log文件,保留三天内的log,过期删除。
3.1 使用TimedRotatingFileHandler
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是不会自动删除掉日志。若设3,则在文件的创建过程中
库会判断是否有超过这个3,若超过,则会从最先创建的开始删除。
#!/usr/bin/env python3import timeimport loggingimport logging.handlers# logging初始化工作logging.basicConfig()# myapp的初始化工作myapp = logging.getLogger('myapp')myapp.setLevel(logging.INFO)# 添加TimedRotatingFileHandler# 定义一个1秒换一次log文件的handler# 保留3个旧log文件filehandler = logging.handlers.TimedRotatingFileHandler("logs/myapp.log", when='S', interval=1, backupCount=3)# 设置后缀名称,跟strftime的格式一样filehandler.suffix = "%Y-%m-%d_%H-%M-%S.log"myapp.addHandler(filehandler)while True: time.sleep(0.1) myapp.info("test")
注意:filehanlder.suffix的格式必须这么写,才能自动删除旧文件,如果设定是天,就必须写成“%Y-%m-%d.log”,写成其他格式会导致删除旧文件不生效。这个配置在源码里能看出来,但是在官方文档并没有说明这一点!!!!!!!!!!
3.2 RotatingFileHandler基于文件大小切分
这个配置是可以生效的,符合预期
#!/usr/bin/env python3import timeimport loggingimport logging.handlers# logging初始化工作logging.basicConfig()# myapp的初始化工作myapp = logging.getLogger('myapp')myapp.setLevel(logging.INFO)# 写入文件,如果文件超过100个Bytes,仅保留5个文件。handler = logging.handlers.RotatingFileHandler( 'logs/myapp.log', maxBytes=100, backupCount=5)# 设置后缀名称,跟strftime的格式一样myapp.addHandler(handler)while True: time.sleep(0.01) myapp.info("file test")
阅读全文
0 0
- [bigdata-078] python3 logging 的示例 TimedRotatingFileHandler和RotatingFileHandler 基于时间切分和基于文件大小切分
- 基于Mycat的数据库切分方案和Join探索
- 数据库的垂直切分和水平切分
- 数据库的垂直切分和水平切分
- 数据库的垂直切分和水平切分
- 数据库的垂直切分和水平切分
- 数据库的垂直切分和水平切分
- 数据库的垂直切分和水平切分
- 数据库的垂直切分和水平切分
- mycat 垂直切分和水平切分配置示例
- 数据库的水平切分和垂直切分概念
- 数据库切分(3)之数据库切分实施策略和示例演示
- Linux文件的切分和结合
- 数据库Sharding的思想和切分策略
- python 和 java 的字符串切分问题
- 字符串切分,String和StringUtils的区别
- 字符串切分,String和StringUtils的区别
- 字符串切分,String和StringUtils的区别
- hive全套安装过程,通吃环境。
- 动态规划-硬币问题
- arm 反汇编
- windows下C语言实现<读取>和<写入> *.ini文件。
- Hihocoder上java程序的提交格式
- [bigdata-078] python3 logging 的示例 TimedRotatingFileHandler和RotatingFileHandler 基于时间切分和基于文件大小切分
- 免费PM2.5数据如何获取之PM25.in网站API调用JSON数据处理方法
- 关于学习CSS flexbox的文章或网址链接
- 螺旋矩阵--由外向内旋转输出
- 配置多个tomcat的步骤
- ViewPager滑动效果加导航效果
- DIR 命令
- 获取前端传送的数据及登陆验证--个人学习Django的一些总结
- JS 版本比较