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按照多个字符对字符串进行分割的方法
Mar 17 Python
python实现实时监控文件的方法
Aug 26 Python
Python实现PS滤镜的旋转模糊功能示例
Jan 20 Python
Python实现将数据框数据写入mongodb及mysql数据库的方法
Apr 02 Python
Python3.5面向对象与继承图文实例详解
Apr 24 Python
如何运行.ipynb文件的图文讲解
Jun 27 Python
Python paramiko模块使用解析(实现ssh)
Aug 30 Python
Python @property及getter setter原理详解
Mar 31 Python
使用jupyter notebook直接打开.md格式的文件
Apr 10 Python
在Windows上安装和配置 Jupyter Lab 作为桌面级应用程序教程
Apr 22 Python
django 解决model中类写不到数据库中,数据库无此字段的问题
May 20 Python
python openCV自制绘画板
Oct 27 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
thinkPHP5 tablib标签库自定义方法详解
2017/05/10 PHP
Laravel框架控制器的middleware中间件用法分析
2019/09/30 PHP
JavaScript OOP面向对象介绍
2010/12/02 Javascript
几种设置表单元素中文本输入框不可编辑的方法总结
2013/11/25 Javascript
jQuery实现数字加减效果汇总
2014/12/16 Javascript
Windows系统中安装nodejs图文教程
2015/02/28 NodeJs
移除AngularJS下URL中的#字符的方法
2015/06/19 Javascript
JavaScript知识点总结(五)之Javascript中两个等于号(==)和三个等于号(===)的区别
2016/05/31 Javascript
AngularJS 依赖注入详解及示例代码
2016/08/17 Javascript
Bootstrap源码解读下拉菜单(4)
2016/12/23 Javascript
Vue.js仿微信聊天窗口展示组件功能
2017/08/11 Javascript
微信小程序实现tab和swiper切换结合效果
2020/07/17 Javascript
几个你不知道的技巧助你写出更优雅的vue.js代码
2018/06/11 Javascript
详解angularjs4部署文件过大解决过程
2018/12/05 Javascript
vue webpack build资源相对路径的问题及解决方法
2020/06/04 Javascript
element日历calendar组件上月、今天、下月、日历块点击事件及模板源码
2020/07/27 Javascript
[01:52]深扒TI7聊天轮盘语音出处7
2017/05/11 DOTA
python将xml xsl文件生成html文件存储示例讲解
2013/12/03 Python
Python实现同时兼容老版和新版Socket协议的一个简单WebSocket服务器
2014/06/04 Python
python使用KNN算法手写体识别
2018/02/01 Python
django项目搭建与Session使用详解
2018/10/10 Python
解决Python3.5+OpenCV3.2读取图像的问题
2018/12/05 Python
详解Python 调用C# dll库最简方法
2019/06/20 Python
使用pandas读取文件的实现
2019/07/31 Python
Python读取图像并显示灰度图的实现
2020/12/01 Python
KEEN美国官网:美国人气户外休闲鞋品牌
2021/03/09 全球购物
标准化管理实施方案
2014/02/25 职场文书
小学教学随笔感言
2014/02/26 职场文书
三年级学生评语
2014/04/23 职场文书
奉献家乡演讲稿
2014/09/16 职场文书
运动会搞笑广播稿
2014/10/14 职场文书
教师党员学习群众路线心得体会
2014/11/04 职场文书
员工评语范文
2014/12/31 职场文书
清洁工个人工作总结
2015/03/05 职场文书
校园文化艺术节开幕词
2016/03/04 职场文书
DQL数据查询语句使用示例
2022/12/24 MySQL