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刷投票的脚本实现代码
Nov 08 Python
栈和队列数据结构的基本概念及其相关的Python实现
Aug 24 Python
Python中单例模式总结
Feb 20 Python
利用python画出折线图
Jul 26 Python
python学生信息管理系统(完整版)
Apr 05 Python
Python使用random模块生成随机数操作实例详解
Sep 17 Python
PyTorch中permute的用法详解
Dec 30 Python
django Layui界面点击弹出对话框并请求逻辑生成分页的动态表格实例
May 12 Python
Python利用pip安装tar.gz格式的离线资源包
Sep 14 Python
Python爬虫分析微博热搜关键词的实现代码
Feb 22 Python
浅谈Python xlwings 读取Excel文件的正确姿势
Feb 26 Python
利用Python实现Picgo图床工具
Nov 23 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
完美解决:Apache启动问题―(OS 10022)提供了一个无效的参数
2013/06/08 PHP
php查找字符串出现次数的方法
2014/12/01 PHP
详解thinkphp实现excel数据的导入导出(附完整案例)
2016/12/29 PHP
javascript 年月日联动实现核心代码
2009/12/21 Javascript
玩转jQuery按钮 请告诉我你最喜欢哪些?
2012/01/08 Javascript
js左右弹性滚动对联广告代码分享
2014/02/19 Javascript
jQuery模拟原生态App上拉刷新下拉加载更多页面及原理
2015/08/10 Javascript
JS实现的5级联动Select下拉选择框实例
2015/08/17 Javascript
AngularJS 单元测试(二)详解
2016/09/21 Javascript
js中string和number类型互转换技巧(分享)
2016/11/28 Javascript
jQuery实现的checkbox级联选择下拉菜单效果示例
2016/12/26 Javascript
JS基于正则实现数字千分位用逗号分隔的方法
2017/06/16 Javascript
Vue keep-alive实践总结(推荐)
2017/08/31 Javascript
个人小程序接入支付解决方案
2019/05/23 Javascript
小谈angular ng deploy的实现
2020/04/07 Javascript
[55:39]DOTA2-DPC中国联赛 正赛 VG vs LBZS BO3 第二场 1月19日
2021/03/11 DOTA
python实现电子词典
2020/04/23 Python
pyqt4教程之实现半透明的天气预报界面示例
2014/03/02 Python
Python中super关键字用法实例分析
2015/05/28 Python
Python3.4学习笔记之类型判断,异常处理,终止程序操作小结
2019/03/01 Python
详解numpy矩阵的创建与数据类型
2019/10/18 Python
解决python DataFrame 打印结果不换行问题
2020/04/09 Python
python 实现单例模式的5种方法
2020/09/23 Python
使用CSS变量实现炫酷惊人的悬浮效果
2019/04/26 HTML / CSS
HTML5手机端弹出遮罩菜单特效代码
2016/01/27 HTML / CSS
recorder.js 基于Html5录音功能的实现
2020/05/26 HTML / CSS
100%法国制造的游戏和玩具:Les Jouets Français
2021/03/02 全球购物
土木工程个人自荐信范文
2013/11/30 职场文书
个人社会实践自我鉴定
2014/03/24 职场文书
带病坚持工作事迹
2014/05/03 职场文书
领导班子四风表现材料
2014/08/23 职场文书
酒店前台接待岗位职责
2015/04/02 职场文书
贷款收入证明格式
2015/06/24 职场文书
廉洁自律心得体会2016
2016/01/13 职场文书
检讨书范文
2019/04/16 职场文书
python机器学习实现oneR算法(以鸢尾data为例)
2022/03/03 Python