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挑选文件夹里宽大于300图片的方法
Mar 05 Python
Pthon批量处理将pdb文件生成dssp文件
Jun 21 Python
高质量Python代码编写的5个优化技巧
Nov 16 Python
python实现员工管理系统
Jan 11 Python
详解如何在python中读写和存储matlab的数据文件(*.mat)
Feb 24 Python
详解Django+Uwsgi+Nginx的生产环境部署
Jun 25 Python
Python内存读写操作示例
Jul 18 Python
python 为什么说eval要慎用
Mar 26 Python
python原类、类的创建过程与方法详解
Jul 19 Python
django项目简单调取百度翻译接口的方法
Aug 06 Python
Django实现文件上传和下载功能
Oct 06 Python
在Python中等距取出一个数组其中n个数的实现方式
Nov 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
提升PHP执行速度全攻略(下)
2006/10/09 PHP
PHP中将数组转成XML格式的实现代码
2011/08/08 PHP
php对mongodb的扩展(初出茅庐)
2012/11/11 PHP
thinkPHP5.1框架路由::get、post请求简单用法示例
2019/05/06 PHP
jQuery插件 tabBox实现代码
2010/02/09 Javascript
extjs中grid中嵌入动态combobox的应用
2011/01/01 Javascript
判断多个input type=file是否有已经选择好文件的代码
2012/05/23 Javascript
javascript对select标签的控制(option选项/select)
2013/01/31 Javascript
捕获浏览器关闭、刷新事件不同情况下的处理方法
2013/06/02 Javascript
window.opener用法和用途实例介绍
2013/08/19 Javascript
jquery三个关闭弹出层的小示例
2013/11/05 Javascript
jQuery $.extend()用法总结
2014/06/15 Javascript
不同编码的页面表单数据乱码问题解决方法
2015/02/15 Javascript
javascript设计模式之对象工厂函数与构造函数详解
2015/07/30 Javascript
jQuery移动页面开发中的触摸事件与虚拟鼠标事件简介
2015/12/03 Javascript
vue2.0数据双向绑定与表单bootstrap+vue组件
2017/02/27 Javascript
详解ES6中的 Set Map 数据结构学习总结
2018/11/06 Javascript
Jquery的autocomplete插件用法及参数讲解
2019/03/12 jQuery
重学JS 系列:聊聊继承(推荐)
2019/04/11 Javascript
vue页面加载时的进度条功能(实例代码)
2020/01/13 Javascript
Python实现从url中提取域名的几种方法
2014/09/26 Python
使用Python编写基于DHT协议的BT资源爬虫
2016/03/19 Python
python的中异常处理机制
2018/08/30 Python
python 模拟登陆github的示例
2020/12/04 Python
如何编写python的daemon程序
2021/01/07 Python
利用HTML5绘制点线面组成的3D图形的示例
2015/05/12 HTML / CSS
匡威西班牙官网:Converse西班牙
2019/10/01 全球购物
中科创达面试题
2016/12/28 面试题
毕业生求职简历中的自我评价
2013/10/18 职场文书
卫生巾广告词
2014/03/18 职场文书
教研活动总结
2014/04/28 职场文书
中专毕业生的自荐书
2014/07/01 职场文书
2015年国际护士节演讲稿
2015/03/18 职场文书
交心谈心活动总结
2015/05/11 职场文书
浅谈由position属性引申的css进阶讨论
2021/05/25 HTML / CSS
详解PHP设计模式之依赖注入模式
2021/05/25 PHP