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的迭代器与生成器实例详解
Jul 16 Python
python采用getopt解析命令行输入参数实例
Sep 30 Python
Python实现针对含中文字符串的截取功能示例
Sep 22 Python
Python中循环引用(import)失败的解决方法
Apr 22 Python
分享一下Python数据分析常用的8款工具
Apr 29 Python
Python返回数组/List长度的实例
Jun 23 Python
python 对类的成员函数开启线程的方法
Jan 22 Python
python读取ini配置的类封装代码实例
Jan 08 Python
通过实例解析python描述符原理作用
Jan 22 Python
Python实现RabbitMQ6种消息模型的示例代码
Mar 30 Python
python 读取二进制 显示图片案例
Apr 24 Python
opencv 查找连通区域 最大面积实例
Jun 04 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表单提交与$_POST实例分析
2015/01/26 PHP
Thinkphp框架开发移动端接口(1)
2016/08/18 PHP
mac系统下为 php 添加 pcntl 扩展
2016/08/28 PHP
详解PHP序列化和反序列化原理
2018/01/15 PHP
PHP yield关键字功能与用法分析
2019/01/03 PHP
Jquery之美中不足小结
2011/02/16 Javascript
用JS控制回车事件的代码
2011/02/20 Javascript
JavaScript两种跨域技术全面介绍
2014/04/16 Javascript
node.js中的path.sep方法使用说明
2014/12/08 Javascript
javascript实现简单的进度条
2015/07/02 Javascript
jQuery实现百叶窗焦点图动画效果代码分享(附源码下载)
2016/03/14 Javascript
html+js实现简单的计算器代码(加减乘除)
2016/07/12 Javascript
[01:37]TI4西雅图DOTA2前线报道 VG拿下首胜教练357给出获胜秘诀
2014/07/10 DOTA
采用Psyco实现python执行速度提高到与编译语言一样的水平
2014/10/11 Python
解决python2.7 查询mysql时出现中文乱码
2016/10/09 Python
使用Turtle画正螺旋线的方法
2017/09/22 Python
python中 logging的使用详解
2017/10/25 Python
Python实现统计给定字符串中重复模式最高子串功能示例
2018/05/16 Python
Selenium(Python web测试工具)基本用法详解
2018/08/10 Python
在Python 中实现图片加框和加字的方法
2019/01/26 Python
图文详解python安装Scrapy框架步骤
2019/05/20 Python
Django框架静态文件使用/中间件/禁用ip功能实例详解
2019/07/22 Python
Python SELENIUM上传文件或图片实现过程
2019/10/28 Python
python重要函数eval多种用法解析
2020/01/14 Python
Marlies Dekkers内衣美国官方网上商店:高端内衣品牌
2018/11/12 全球购物
意大利和国际最佳时尚品牌:Drestige
2019/12/28 全球购物
Exception类的常用方法
2012/06/16 面试题
制药工程专业毕业生推荐信
2013/12/24 职场文书
科技之星事迹材料
2014/06/02 职场文书
经典演讲稿开场白
2014/08/25 职场文书
体育教师个人总结
2015/02/09 职场文书
法务专员岗位职责
2015/02/14 职场文书
2016元旦晚会主持词开场白和结束语
2015/12/04 职场文书
党员干部学习心得体会
2016/01/23 职场文书
Memcached介绍及php-memcache扩展安装
2021/04/01 PHP
python画条形图的具体代码
2022/04/20 Python