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根据距离和时长计算配速示例
Feb 16 Python
Python 字符串操作方法大全
Mar 11 Python
python多进程读图提取特征存npy
May 21 Python
Python语言进阶知识点总结
May 28 Python
用python打印菱形的实操方法和代码
Jun 25 Python
在python中利用numpy求解多项式以及多项式拟合的方法
Jul 03 Python
Python 通过截图匹配原图中的位置(opencv)实例
Aug 27 Python
Python3 利用face_recognition实现人脸识别的方法
Mar 13 Python
Python爬虫爬取博客实现可视化过程解析
Jun 29 Python
Pytorch模型迁移和迁移学习,导入部分模型参数的操作
Mar 03 Python
python开发人人对战的五子棋小游戏
May 02 Python
Python 文字识别
May 11 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语法(4)
2006/10/09 PHP
mysql_num_rows VS COUNT 效率问题分析
2011/04/23 PHP
PHP符合PSR编程规范的实例分享
2016/12/21 PHP
PHP CURL采集百度搜寻结果图片不显示问题的解决方法
2017/02/03 PHP
Gambit vs CL BO3 第三场 2.13
2021/03/10 DOTA
犀利的js 函数集合
2009/06/11 Javascript
JS等比例缩小图片尺寸的实例
2013/02/27 Javascript
fmt:formatDate的输出格式详解
2014/01/09 Javascript
jquery实现弹出层遮罩效果的简单实例
2014/03/03 Javascript
使用jquery实现放大镜效果
2014/09/02 Javascript
jquery实现鼠标经过显示下划线的渐变下拉菜单效果代码
2015/08/24 Javascript
js表单中选择框值的获取及表单的序列化
2015/12/17 Javascript
jquery操作checkbox火狐下第二次无法勾选的解决方法
2016/10/10 Javascript
详解vue中使用express+fetch获取本地json文件
2017/10/10 Javascript
vue-router 组件复用问题详解
2018/01/22 Javascript
Servlet3.0与纯javascript通过Ajax交互的实例详解
2018/03/18 Javascript
解决vue中使用Axios调用接口时出现的ie数据处理问题
2018/08/13 Javascript
uniapp微信小程序实现一个页面多个倒计时
2020/11/01 Javascript
Python进程间通信用法实例
2015/06/04 Python
numpy.random.seed()的使用实例解析
2018/02/03 Python
python pandas 对时间序列文件处理的实例
2018/06/22 Python
Python通过调用有道翻译api实现翻译功能示例
2018/07/19 Python
Python有参函数使用代码实例
2020/01/06 Python
10个python3常用排序算法详细说明与实例(快速排序,冒泡排序,桶排序,基数排序,堆排序,希尔排序,归并排序,计数排序)
2020/03/17 Python
python实时监控logstash日志代码
2020/04/27 Python
如何打包Python Web项目实现免安装一键启动的方法
2020/05/21 Python
Pytorch框架实现mnist手写库识别(与tensorflow对比)
2020/07/20 Python
一个不错的HTML5 Canvas多层点击事件监听实例
2014/04/29 HTML / CSS
商超业务员岗位职责
2014/03/12 职场文书
老人祝寿主持词
2014/03/28 职场文书
英语教研活动总结
2014/07/02 职场文书
文员岗位职责
2015/02/04 职场文书
个人工作总结(管理人员)范文
2019/08/13 职场文书
导游词之山西关帝庙
2019/11/01 职场文书
八年级作文之友谊
2019/12/02 职场文书
python 命令行传参方法总结
2021/05/25 Python