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的SimPy库简化复杂的编程模型的介绍
Apr 13 Python
Python多线程下载文件的方法
Jul 10 Python
Python paramiko模块的使用示例
Apr 11 Python
python 中的列表生成式、生成器表达式、模块导入
Jun 19 Python
Python 实现判断图片格式并转换,将转换的图像存到生成的文件夹中
Jan 13 Python
解决springboot yml配置 logging.level 报错问题
Feb 21 Python
Django实现列表页商品数据返回教程
Apr 03 Python
通过python调用adb命令对App进行性能测试方式
Apr 23 Python
keras和tensorflow使用fit_generator 批次训练操作
Jul 03 Python
解决运行django程序出错问题 'str'object has no attribute'_meta'
Jul 15 Python
python安装及变量名介绍详解
Dec 12 Python
Python快速优雅的批量修改Word文档样式
May 20 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中常用编辑器推荐
2007/01/02 PHP
PHP开发规范手册之PHP代码规范详解
2011/01/13 PHP
php5.3 goto函数介绍和示例
2014/03/21 PHP
Cygwin中安装PHP方法步骤
2015/07/04 PHP
php微信支付接口开发程序
2016/08/02 PHP
基于yaf框架和uploadify插件,做的一个导入excel文件,查看并保存数据的功能
2017/01/24 PHP
解决PHP 7编译安装错误:cannot stat ‘phar.phar’: No such file or directory
2017/02/25 PHP
php写入mysql中文乱码的实例解决方法
2019/09/17 PHP
基于jQuery的计算文本框字数的代码
2012/06/06 Javascript
Json和Jsonp理论实例代码详解
2013/11/15 Javascript
jQuery获得内容和属性示例代码
2014/01/16 Javascript
父页面显示遮罩层弹出半透明状态的dialog
2014/03/04 Javascript
nodejs教程之异步I/O
2014/11/21 NodeJs
前端框架Vue.js构建大型应用浅析
2016/09/12 Javascript
js判断iframe中元素是否存在的实现代码
2016/12/24 Javascript
AngularJs每天学习之总体介绍
2017/08/07 Javascript
认识jQuery的Promise的具体使用方法
2017/10/10 jQuery
JS实现的视频弹幕效果示例
2018/08/17 Javascript
Vue使用localStorage存储数据的方法
2019/05/27 Javascript
跟老齐学Python之Python文档
2014/10/10 Python
Python中表示字符串的三种方法
2017/09/06 Python
TensorFlow2.0使用keras训练模型的实现
2021/02/20 Python
CSS3图片旋转特效(360/60/-360度)
2013/10/10 HTML / CSS
html5的input的required使用中遇到的问题及解决方法
2018/04/24 HTML / CSS
一篇.NET面试题
2014/09/29 面试题
介绍一下Python下range()函数的用法
2013/11/07 面试题
工业学校毕业生自荐信范文
2014/01/03 职场文书
手工社团活动方案
2014/02/17 职场文书
学习保证书范文
2014/04/30 职场文书
教学改革问题查摆整改措施
2014/09/27 职场文书
冰雪公主观后感
2015/06/16 职场文书
2015年工会工作总结范文
2015/07/23 职场文书
如何用PHP websocket实现网页实时聊天
2021/05/26 PHP
MySQL的Query Cache图文详解
2021/07/01 MySQL
Python 绘制多因子柱状图
2022/05/11 Python
Win11控制面板快捷键是什么?Win11打开控制面板的方法汇总
2022/07/07 数码科技