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实现DES加密解密方法实例详解
Jun 30 Python
python爬虫实现教程转换成 PDF 电子书
Feb 19 Python
python爬虫框架scrapy实战之爬取京东商城进阶篇
Apr 24 Python
基于循环神经网络(RNN)的古诗生成器
Mar 26 Python
pandas数值计算与排序方法
Apr 12 Python
django 删除数据库表后重新同步的方法
May 27 Python
用Python分析3天破10亿的《我不是药神》到底神在哪?
Jul 12 Python
pymongo中聚合查询的使用方法
Mar 22 Python
Python实现串口通信(pyserial)过程解析
Sep 25 Python
Python3.7.0 Shell添加清屏快捷键的实现示例
Mar 23 Python
Django Model中字段(field)的各种选项说明
May 19 Python
python多线程和多进程关系详解
Dec 14 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 字符截取 解决中文的截取问题,不用mb系列
2009/09/29 PHP
php常用ODBC函数集(详细)
2013/06/24 PHP
Yii 使用intervention/image拓展实现图像处理功能
2019/06/22 PHP
JS定时刷新页面及跳转页面的方法
2013/07/04 Javascript
jquery easyui combobox模糊过滤(示例代码)
2013/11/30 Javascript
用javascript替换URL中的参数值示例代码
2014/01/27 Javascript
删除Javascript Object中间的key
2014/11/18 Javascript
javascript设计模式之对象工厂函数与构造函数详解
2015/07/30 Javascript
如何实现星星评价(jquery.raty.js插件)
2016/12/21 Javascript
js轮播图的插件化封装详解
2017/07/17 Javascript
轻松玩转BootstrapTable(后端使用SpringMVC+Hibernate)
2017/09/06 Javascript
python元组操作实例解析
2014/09/23 Python
轻松掌握python设计模式之访问者模式
2016/11/18 Python
python实现rsa加密实例详解
2017/07/19 Python
python 换位密码算法的实例详解
2017/07/19 Python
深入理解python中函数传递参数是值传递还是引用传递
2017/11/07 Python
Python实现的插入排序算法原理与用法实例分析
2017/11/22 Python
pytorch动态网络以及权重共享实例
2020/01/06 Python
解决django接口无法通过ip进行访问的问题
2020/03/27 Python
Jupyter加载文件的实现方法
2020/04/14 Python
python requests库的使用
2021/01/06 Python
css3实现可拖动的魔方3d效果
2019/05/07 HTML / CSS
Html5原生拖拽相关事件简介以及基础实现
2020/11/19 HTML / CSS
Smashbox英国官网:美国知名彩妆品牌
2017/11/13 全球购物
管理学专业个人求职信范文
2013/09/21 职场文书
安全标准化汇报材料
2014/02/03 职场文书
党员学习中共十八大思想报告
2014/09/12 职场文书
镇人大副主席民主生活会对照检查材料思想汇报
2014/10/01 职场文书
群众路线党员个人剖析材料
2014/10/08 职场文书
党员个人自我剖析材料
2014/10/08 职场文书
求职自我推荐信
2015/03/24 职场文书
超市食品安全承诺书
2015/04/29 职场文书
指导教师推荐意见
2015/06/05 职场文书
军训通讯稿范文
2015/07/18 职场文书
个人售房合同协议书
2016/03/21 职场文书
Python Pandas数据分析之iloc和loc的用法详解
2021/11/11 Python