Python中logging日志记录到文件及自动分割的操作代码


Posted in Python onAugust 05, 2020

日志作为项目开发和运行中必备组件,python提供了内置的logging模块来完成这个工作;借助 TimedRotatingFileHandler 可以按日期自动分割日志,自动保留日志文件数量等,下面是对日志的一个简单封装和测试。

import logging
import os
from logging import handlers

class Logger(object):
 # 日志级别关系映射
 level_relations = {
 'debug': logging.DEBUG,
 'info': logging.INFO,
 'warning': logging.WARNING,
 'error': logging.ERROR,
 'critical': logging.CRITICAL
 }

 def __init__(self,
   filename,
   level='info',
   when='D',
   back_count=3,
   fmt='%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s'):
 f_dir, f_name = os.path.split(filename)
 os.makedirs(f_dir, exist_ok=True) # 当前目录新建log文件夹
 self.logger = logging.getLogger(filename)
 format_str = logging.Formatter(fmt) # 设置日志格式
 self.logger.setLevel(self.level_relations.get(level)) # 设置日志级别
 sh = logging.StreamHandler() # 往屏幕上输出
 sh.setFormatter(format_str) # 设置屏幕上显示的格式
 th = handlers.TimedRotatingFileHandler(filename=filename, when=when, backupCount=back_count,
      encoding='utf-8') # 往文件里写入指定间隔时间自动生成文件的Handler
 # 实例化TimedRotatingFileHandler
 # interval是时间间隔,backupCount是备份文件的个数,如果超过这个个数,就会自动删除,when是间隔的时间单位,单位有以下几种:
 # S 秒
 # M 分
 # H 小时
 # D 天
 # 'W0'-'W6' 每星期(interval=0时代表星期一:W0)
 # midnight 每天凌晨
 th.setFormatter(format_str) # 设置文件里写入的格式
 self.logger.addHandler(sh) # 把对象加到logger里
 self.logger.addHandler(th)

# 测试
if __name__ == '__main__':
 logger = Logger('./logs/2020/app.log', 'debug', 'S', 5).logger
 logger.debug('debug')
 logger.info('info')
 logger.warning('警告')
 logger.error('报错')
 logger.critical('严重')

 # 单独记录error
 err_logger = Logger('./logs/2020/error.log', 'error', 'S', 3).logger
 err_logger.error('错误 error')

Python中logging日志记录到文件及自动分割的操作代码

为了测试方便,我们将时间间隔设为秒(按秒自动命名分割文件),多运行几次后,会按照配置文件数量将多余的日志文件自动删除,保留如上图中的日志文件。

原文链接:https://beltxman.com/3195.html,若无特殊说明本站内容为行星带原创,未经同意禁止转载!

总结

到此这篇关于Python中logging日志记录到文件及自动分割的文章就介绍到这了,更多相关python logging日志记录内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python文件和目录操作函数小结
Jul 11 Python
Python线性方程组求解运算示例
Jan 17 Python
python操作excel的方法
Aug 16 Python
python 列表输出重复值以及对应的角标方法
Jun 11 Python
pyqt5 实现工具栏文字图片同时显示
Jun 13 Python
对Django中内置的User模型实例详解
Aug 16 Python
Python如何使用函数做字典的值
Nov 30 Python
python使用pandas抽样训练数据中某个类别实例
Feb 28 Python
.img/.hdr格式转.nii格式的操作
Jul 01 Python
python实现每天自动签到领积分的示例代码
Aug 18 Python
一文详述 Python 中的 property 语法
Sep 01 Python
Python爬虫教程之利用正则表达式匹配网页内容
Dec 08 Python
Python如何读写字节数据
Aug 05 #Python
python中Django文件上传方法详解
Aug 05 #Python
Python限制内存和CPU使用量的方法(Unix系统适用)
Aug 04 #Python
Python如何将将模块分割成多个文件
Aug 04 #Python
Python 保存加载mat格式文件的示例代码
Aug 04 #Python
python中判断文件结束符的具体方法
Aug 04 #Python
python字典key不能是可以是啥类型
Aug 04 #Python
You might like
火车头discuz6.1 完美采集的php接口文件
2009/09/13 PHP
PHP多维数组指定多字段排序的示例代码
2018/05/16 PHP
Codeigniter里的无刷新上传的实现代码
2019/04/14 PHP
phpstorm最新激活码分享亲测phpstorm2020.2.3版可用
2020/11/22 PHP
对象无length属性时IE6/IE7中无法将其转换成伪数组(ArrayLike)
2011/07/31 Javascript
javascript 基础篇4 window对象,DOM
2012/03/14 Javascript
jquery ajax提交整个表单元素的快捷办法
2013/03/27 Javascript
js操作checkbox遇到的问题解决
2013/06/29 Javascript
jQuery的context属性用法实例
2014/12/27 Javascript
javascript数组输出的两种方式
2015/01/13 Javascript
JavaScript实现在标题栏上显示当前日期的方法
2015/03/19 Javascript
Bootstrap modal使用及点击外部不消失的解决方法
2016/12/13 Javascript
vue-router3.0版本中 router.push 不能刷新页面的问题
2018/05/10 Javascript
Vue 应用中结合vux使用微信 jssdk的方法
2018/08/28 Javascript
基于vue和react的spa进行按需加载的实现方法
2018/09/29 Javascript
Vue 页面权限控制和登陆验证功能的实例代码
2019/06/20 Javascript
详解Node.JS模块 process
2020/08/31 Javascript
js前端对于大量数据的展示方式及处理方法
2020/12/02 Javascript
[43:51]2018DOTA2亚洲邀请赛3月30日 小组赛B组 EG VS Secret
2018/03/31 DOTA
MySQL最常见的操作语句小结
2015/05/07 Python
Python自动化部署工具Fabric的简单上手指南
2016/04/19 Python
python 3调用百度OCR API实现剪贴板文字识别
2018/09/04 Python
解决Python print输出不换行没空格的问题
2018/11/14 Python
Window环境下Scrapy开发环境搭建
2018/11/18 Python
python 多进程队列数据处理详解
2019/12/23 Python
python闭包、深浅拷贝、垃圾回收、with语句知识点汇总
2020/03/11 Python
美国购买舞会礼服网站:Couture Candy
2019/12/29 全球购物
说一下Linux下有关用户和组管理的命令
2016/01/04 面试题
介绍一下Java中标识符的命名规则
2014/02/03 面试题
上课看小说检讨书
2014/02/22 职场文书
小学庆六一活动方案
2014/02/28 职场文书
文艺晚会主持词
2014/03/24 职场文书
教学改革实施方案
2014/03/31 职场文书
个人向公司借款协议书
2014/10/09 职场文书
毕业实习证明(4篇)
2014/10/28 职场文书
扬州个园导游词
2015/02/06 职场文书