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序列之list和tuple常用方法以及注意事项
Jan 09 Python
Python中matplotlib中文乱码解决办法
May 12 Python
Python使用zip合并相邻列表项的方法示例
Mar 17 Python
python实现windows下文件备份脚本
May 27 Python
Python 利用内置set函数对字符串和列表进行去重的方法
Jun 29 Python
Linux下python3.7.0安装教程
Jul 30 Python
Linux 修改Python命令的方法示例
Dec 03 Python
python搜索包的路径的实现方法
Jul 19 Python
Python爬虫 bilibili视频弹幕提取过程详解
Jul 31 Python
pytorch实现用CNN和LSTM对文本进行分类方式
Jan 08 Python
关于python 跨域处理方式详解
Mar 28 Python
详解Python直接赋值,深拷贝和浅拷贝
Jul 09 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
JSON 编辑器实现代码
2009/12/06 Javascript
用Javascript实现Sleep暂停功能代码
2010/09/03 Javascript
关闭浏览器窗口弹出提示框并且可以控制其失效
2014/04/15 Javascript
AngularJS表单编辑提交功能实例
2015/02/13 Javascript
nw.js实现类似微信的聊天软件
2015/03/16 Javascript
AngularJS基础学习笔记之控制器
2015/05/10 Javascript
学习JavaScript设计模式之代理模式
2016/01/12 Javascript
详解javascript获取url信息的常见方法
2016/12/19 Javascript
详谈Angular路由与Nodejs路由的区别
2017/03/05 NodeJs
Javascript中的async awai的用法
2017/05/17 Javascript
AngularJS实现单一页面内设置跳转路由的方法
2017/06/28 Javascript
基于构造函数的五种继承方法小结
2017/07/27 Javascript
js 发布订阅模式的实例讲解
2017/09/10 Javascript
详解如何运行vue项目
2019/04/15 Javascript
微信小游戏之使用three.js 绘制一个旋转的三角形
2019/06/10 Javascript
Node.js之删除文件夹(含递归删除)代码实例
2019/09/09 Javascript
24个ES6方法解决JS实际开发问题(小结)
2020/05/31 Javascript
ant design vue datepicker日期选择器中文化操作
2020/10/28 Javascript
Nodejs + sequelize 实现增删改查操作
2020/11/07 NodeJs
Python采用raw_input读取输入值的方法
2014/08/18 Python
Linux下安装python3.6和第三方库的教程详解
2018/11/09 Python
python使用配置文件过程详解
2019/12/28 Python
python ubplot使用方法解析
2020/01/10 Python
基于Python正确读取资源文件
2020/09/14 Python
80年代复古T恤:TruffleShuffle
2018/07/02 全球购物
伦敦最受欢迎的蛋糕店:Konditor & Cook
2019/11/01 全球购物
CNC数控操作工岗位职责
2013/11/19 职场文书
GMP办公室主任岗位职责
2014/03/14 职场文书
毕业留言寄语大全
2014/04/10 职场文书
化验室岗位职责
2015/02/14 职场文书
南京大屠杀观后感
2015/06/02 职场文书
活着观后感
2015/06/03 职场文书
2016年中学植树节活动总结
2016/03/16 职场文书
2016年“我们的节日·端午节”活动总结
2016/04/01 职场文书
PyCharm配置KBEngine快速处理代码提示冲突、配置命令问题
2021/04/03 Python
Linux在两个服务器直接传文件的操作方法
2022/08/05 Servers