Rotating-logger

日志文件太大,一般不容易使用。现在的日志系统一般都提供了方便的日志回绕分片。一般有按照文件大小、记录时间长度来对日志文件分片。
在python logging中,提供了这2种分片方式。

  1. 按照文件大小分片

这种方式使用的Handler是RotatingFileHandler;

class RotatingFileHandler(BaseRotatingHandler):"""Handler for logging to a set of files, which switches from one fileto the next when the current file reaches a certain size."""def __init__(self, filename, mode='a', maxBytes=0, backupCount=0, encoding=None, delay=0):

下面看看使用方式:


rlogger = logging.getLogger("loggingtest2")
rfh = RotatingFileHandler("log/rtest.log", maxBytes=2000,backupCount=3)formatter = logging.Formatter('%(name)-12s %(asctime)s.%(msecs)03d %(levelname)-8s %(message)s', datefmt='%Y-%m-%d,%H:%M:%S')
rfh.setFormatter(formatter)rlogger.addHandler(rfh)

完整示例:

import sys,time
import logging
from logging.handlers import RotatingFileHandler,TimedRotatingFileHandlerrlogger = logging.getLogger("loggingtest2")
rfh = RotatingFileHandler("log/rtest.log", maxBytes=2000,backupCount=3)formatter = logging.Formatter('%(name)-12s %(asctime)s.%(msecs)03d %(levelname)-8s %(message)s', datefmt='%Y-%m-%d,%H:%M:%S')
rfh.setFormatter(formatter)rlogger.addHandler(rfh)rlogger.setLevel(level = logging.INFO)i = 0
while i<2000:rlogger.info("this is a %s %i.......","info",i)rlogger.warning("this is a %s %i........", "warning",i)i=i+1

执行时,会在log下生成rtest.log,以及分片的3个backup文件rtest.log.0, rtest.log.1, rtest.log.2

  1. 按照时间长度分片

这里使用的是TimedRotatingFileHandler。

定义如下:

class TimedRotatingFileHandler(BaseRotatingHandler):"""Handler for logging to a file, rotating the log file at certain timedintervals.If backupCount is > 0, when rollover is done, no more than backupCountfiles are kept - the oldest ones are deleted."""def __init__(self, filename, when='h', interval=1, backupCount=0, encoding=None, delay=False, utc=False):

使用方式:


formatter = logging.Formatter('%(name)-12s %(asctime)s.%(msecs)03d %(levelname)-8s %(message)s', datefmt='%Y-%m-%d,%H:%M:%S')  trlogger = logging.getLogger()
trfh = TimedRotatingFileHandler("log/tr_test.log",when="S",interval=5,backupCount=3)trfh.setFormatter(formatter)
trlogger.addHandler(trfh)

完整示例:

import sys,time
import logging
from logging.handlers import RotatingFileHandler,TimedRotatingFileHandlerformatter = logging.Formatter('%(name)-12s %(asctime)s.%(msecs)03d %(levelname)-8s %(message)s', datefmt='%Y-%m-%d,%H:%M:%S')  trlogger = logging.getLogger()
trfh = TimedRotatingFileHandler("log/tr_test.log",when="S",interval=5,backupCount=3)trfh.setFormatter(formatter)
trlogger.addHandler(trfh)trlogger.setLevel(level = logging.INFO)i=0
while i < 500:trlogger.info("this is a %s .......","info")trlogger.warning("this is a %s........", "warning")time.sleep(0.5)i=i+1

python中的logger之二相关推荐

  1. ML之XGBoost:XGBoost参数调优的优秀外文翻译—《XGBoost中的参数调优完整指南(带python中的代码)》(二)

    ML之XGBoost:XGBoost参数调优的优秀外文翻译-<XGBoost中的参数调优完整指南(带python中的代码)>(二) 目录 2. xgboost参数/XGBoost Para ...

  2. python画抛物线_在python中利用最小二乘拟合二次抛物线函数的方法

    1.最小二乘也可以拟合二次函数 我们都知道用最小二乘拟合线性函数没有问题,那么能不能拟合二次函数甚至更高次的函数呢?答案当然是可以的.下面我们就来试试用最小二乘来拟合抛物线形状的的图像. 对于二次函数 ...

  3. python中常用的模块二

    一.序列化 指:在我们存储数据的时候,需要对我们的对象进行处理,把对象处理成方便存储和传输的数据格式,这个就是序列化, 不同的序列化结果不同,但目的是一样的,都是为了存储和传输. 一,pickle.可 ...

  4. python中数据类型转换_Python(二).数据类型,数据类型转换

    数据类型 在python中,能够直接处理的的数据类型有以下几种:(这里似乎说法不一样,我这里仅表示自己的观点) (1).数字(Number) (2).字符串(String) (3).布尔值(Bool) ...

  5. Python 中的黑暗角落(二):生成器协程的调度问题

    前作介绍了 Python 中的 yield 关键字.此篇介绍如何使用 yield 表达式,在 Python 中实现一个最基本的协程调度示例,避免 I/O 操作占用大量 CPU 计算时间. 协程及其特点 ...

  6. Python中的模块(二)

    九.requests Python标准库中提供了:urllib等模块以供Http请求,但是,它的 API 太渣了.它是为另一个时代.另一个互联网所创建的.它需要巨量的工作,甚至包括各种方法覆盖,来完成 ...

  7. python中的logger之一

    简介 基本每种开发语言都有对应的logger库提供,以方便输出和记录logger. python内也提供了logger包,可以方便地使用. 简单使用 首先,需要import日志包logger impo ...

  8. python中的logger模块详细讲解

    logger 提供了应用程序可以直接使用的接口 handler将(logger创建的)日志记录发送到合适的目的输出 filter提供了细度设备来决定输出哪条日志记录 formatter决定日志记录的最 ...

  9. python中序列类型是二维元素向量吗_序列类型是二维元素向量,元素之间存在先后关系,通过序号访问。...

    [填空题]MapReduce 计算模式中, Map (映射)的主要任务是:负责输入数据的 . . ,输出 . [多选题]大数据的特征包括( ). [判断题]中断服务过程中如果允许中断嵌套,则优先级高的 ...

最新文章

  1. 标准C++中的string类的用法总结
  2. python基本使用-Python time库基本使用方法分析
  3. python画图中grid等于true_Python3.0科学计算学习之绘图(二)
  4. Java_输出60的十六进制
  5. DM365的BSP源码分析-基于2.6.18内核
  6. asp.net的一些对话
  7. linux 链表头文件,Linux下单链表的实现
  8. 安卓7.0海信定制版新增功能
  9. 读《scikiit-learn机器学习》支持向量机
  10. gmm中隐变量是什么的_隐变量是什么?
  11. 牛客网暑期ACM多校训练营(第五场)B. div(技巧+OEIS or Pell方程)
  12. LeetCode题解答案集合(完全版) Python
  13. 微服务的数据聚合Join
  14. E3亮点:StudioMDHR的《茶杯头》
  15. 【小程序源码】uni-app云开发的网盘助手抓取网盘资源
  16. docker 安装及部署
  17. 【Python二级等考大题】星座三问
  18. Day 11-常用 Composition API_shallowReactive shallowRef
  19. 股票技术分析--任正德主编
  20. 找个程序员做男朋友好难啊

热门文章

  1. 226. Invert Binary Tree 1
  2. 如何开启一个Django项目
  3. 企业云桌面-03-安装第1个企业 CA-013-CA01
  4. Python创建简单的HTTP服务
  5. 基础野:细说原码、反码和补码
  6. Ubuntu   root密码
  7. centos虚拟机根目录空间分配
  8. json类的解析,调试实例
  9. WCF消息之XmlDictionaryWriter
  10. 想建一个带分隔条的label 控件;