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中使用CasperJS获取JS渲染生成的HTML内容的教程
Apr 09 Python
Python中查看文件名和文件路径
Mar 31 Python
Python网络爬虫神器PyQuery的基本使用教程
Feb 03 Python
python中利用zfill方法自动给数字前面补0
Apr 10 Python
Python3.6通过自带的urllib通过get或post方法请求url的实例
May 10 Python
pytorch 固定部分参数训练的方法
Aug 17 Python
python 统计文件中的字符串数目示例
Dec 24 Python
Python中join()函数多种操作代码实例
Jan 13 Python
python词云库wordcloud的使用方法与实例详解
Feb 17 Python
用Python爬取LOL所有的英雄信息以及英雄皮肤的示例代码
Jul 13 Python
python中remove函数的踩坑记录
Jan 04 Python
Python基础之操作MySQL数据库
May 06 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中flush()、ob_flush()、ob_end_flush()的区别介绍
2013/02/17 PHP
php实现大文件断点续传下载实例代码
2019/10/01 PHP
会自动逐行上升的文本框
2006/06/30 Javascript
用javascript实现兼容IE7的类库 IE7_0_9.zip提供下载
2007/08/08 Javascript
json跟xml的对比分析
2008/06/10 Javascript
jQuery 解析xml文件
2009/08/09 Javascript
javascript仿qq界面的折叠菜单实现代码
2012/12/12 Javascript
JS中引用百度地图并将百度地图的logo和信息去掉
2013/09/29 Javascript
jQuery的选择器中的通配符使用介绍
2014/03/20 Javascript
jquery 实现返回顶部功能
2014/11/17 Javascript
Javascript 实现图片无缝滚动
2014/12/19 Javascript
javascript实现 百度翻译 可折叠的分享按钮列表
2015/03/12 Javascript
jQuery实现表格行上移下移和置顶的方法
2015/05/22 Javascript
AngularJS模块学习之Anchor Scroll
2016/01/19 Javascript
高效利用Angular中内置服务$http、$location等
2016/03/22 Javascript
AngularJs实现分页功能不带省略号的代码
2016/05/30 Javascript
JS作为值的函数用法示例
2016/06/20 Javascript
原生js二级联动效果
2017/06/20 Javascript
vue音乐播放器插件vue-aplayer的配置及其使用实例详解
2017/07/10 Javascript
[06:24]DOTA2亚洲邀请赛小组赛第三日 TOP10精彩集锦
2015/02/01 DOTA
Python编程实现从字典中提取子集的方法分析
2018/02/09 Python
Python面向对象程序设计之继承与多继承用法分析
2018/07/13 Python
python函数参数(必须参数、可变参数、关键字参数)
2019/08/16 Python
Django使用Celery加redis执行异步任务的实例内容
2020/02/20 Python
python生成word合同的实例方法
2021/01/12 Python
印度民族服装购物网站:BIBA
2019/08/05 全球购物
会计与出纳自荐书范文
2014/03/16 职场文书
网络技术专业求职信
2014/07/13 职场文书
学校安全管理责任书
2014/07/23 职场文书
保管员岗位职责
2015/02/14 职场文书
中学生逃课检讨书
2015/02/17 职场文书
工作年限证明范本
2015/06/15 职场文书
教师听课学习心得体会
2016/01/15 职场文书
导游词之苏州盘门景区
2019/11/12 职场文书
微软PC Health Check电脑健康状况检查应用下载(Win11配置检测工具)
2021/06/26 数码科技
Redis 彻底禁用RDB持久化操作
2021/07/09 Redis