在程序运行的过程中需要打印一些有用的信息,但如果需要打印的信息比较多的话且运行时间较长则磁盘容量可能不够用。
因此就需要写循环日志。
比如设置日志的大小为3M,设置日志的个数为3个,设置日志名称为Log。
则程序开始时,开始往Log文件写日志,一旦Log超过3M,则将Log存为Log.1,并重新往Log里写日志。以此类推,Log.1满了则存为Log.2,Log.2满了则存为Log.3。都满了Log.3的内容就会被删除了。总之Log保存最新的打印消息。
并且主模块和各个子模块可以共用一个Logging处理器,下面上示例:
主模块:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44#-*-coding:utf-8-*- # logging模块 # 设置单个日志文件最大3M,最多同时存在200个,总计600M,超过则循环式覆盖 # 当前正在写入的日志名称为Log,其它已达到最大容量的日志名称为 Log.1 .2 .3。。。 import datetime import logging import myFun from logging.handlers import RotatingFileHandler #获取一个logger实例 logger = logging.getLogger('mylogger') #设置logger等级 logger.setLevel(level=logging.DEBUG) #设置日志格式 fmt = '%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s' format_str = logging.Formatter(fmt) #设置日志回滚 handle = RotatingFileHandler("Log", maxBytes=10240, backupCount=3,encoding="utf-8") handle.setFormatter(format_str) #设置日志名称 handle.namer = lambda x: 'Log.' + x.split('.')[-1] #给logger添加handler logger.addHandler(handle) #测试主模块 for i in range(50): logger.debug("测试日志main %d", i) #测试子模块打印日志 myFun.myfun()
子模块:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24import logging from logging.handlers import RotatingFileHandler # # logging模块 # 设置单个日志文件最大3M,最多同时存在200个,总计600M,超过则循环式覆盖 # 当前正在写入的日志名称为Log,其它已达到最大容量的日志名称为 Log.1 .2 .3。。。 # def myfun(): #共享主模块日志配置 logger = logging.getLogger('mylogger') print('========fun========') for i in range(50): logger.debug("测试日志fun %d", i) if __name__ == "__main__": print('main') myfun()
生成了Log,Log.1,Log.2,Log.3
部分日志内容
最后
以上就是喜悦白昼最近收集整理的关于python用logging模块写循环日志的全部内容,更多相关python用logging模块写循环日志内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复