python用logging模块写循环日志

在程序运行的过程中需要打印一些有用的信息,但如果需要打印的信息比较多的话且运行时间较长则磁盘容量可能不够用。

因此就需要写循环日志。

比如设置日志的大小为3M,设置日志的个数为3个,设置日志名称为Log。

则程序开始时,开始往Log文件写日志,一旦Log超过3M,则将Log存为Log.1,并重新往Log里写日志。以此类推,Log.1满了则存为Log.2,Log.2满了则存为Log.3。都满了Log.3的内容就会被删除了。总之Log保存最新的打印消息。

并且主模块和各个子模块可以共用一个Logging处理器,下面上示例:

主模块:

#-*-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()

子模块:

import 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

部分日志内容

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值