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创建文件和追加文件内容实例
Oct 21 Python
Python写的英文字符大小写转换代码示例
Mar 06 Python
Python2.x和3.x下maketrans与translate函数使用上的不同
Apr 13 Python
Python自定义主从分布式架构实例分析
Sep 19 Python
Python 多核并行计算的示例代码
Nov 07 Python
python实现画五角星和螺旋线的示例
Jan 20 Python
Python利用matplotlib做图中图及次坐标轴的实例
Jul 08 Python
Python队列、进程间通信、线程案例
Oct 25 Python
Python imread、newaxis用法详解
Nov 04 Python
解决python使用list()时总是报错的问题
May 05 Python
python 逆向爬虫正确调用 JAR 加密逻辑
Jan 12 Python
Anaconda安装pytorch和paddle的方法步骤
Apr 03 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个人网站架设连环讲(三)
2006/10/09 PHP
php self,$this,const,static,->的使用
2009/10/22 PHP
laravel自定义分页效果
2017/07/23 PHP
php使用curl伪造浏览器访问操作示例
2019/09/30 PHP
JavaScript表单常用验证集合
2008/01/16 Javascript
JavaScript XML操作 封装类
2009/07/01 Javascript
JavaScript取得鼠标绝对位置程序代码介绍
2012/09/16 Javascript
js中一个函数获取另一个函数返回值问题探讨
2013/11/21 Javascript
javascript实现获取cookie过期时间的变通方法
2014/08/14 Javascript
初步使用Node连接Mysql数据库
2016/03/03 Javascript
jQuery简单实现仿京东分类导航层效果
2016/06/07 Javascript
js获取对象、数组的实际长度,元素实际个数的实现代码
2016/06/08 Javascript
js实现的xml对象转json功能示例
2016/12/24 Javascript
Javascript中for循环语句的几种写法总结对比
2017/01/23 Javascript
layer弹窗插件操作方法详解
2017/05/19 Javascript
vue项目移动端实现ip输入框问题
2019/03/19 Javascript
BootstrapValidator实现表单验证功能
2019/11/08 Javascript
js瀑布流布局的实现
2020/06/28 Javascript
swiper实现导航滚动效果
2020/12/13 Javascript
windows下 兼容Python2和Python3的解决方法
2018/12/05 Python
Python 实现还原已撤回的微信消息
2019/06/18 Python
pytorch获取模型某一层参数名及参数值方式
2019/12/30 Python
python中字典增加和删除使用方法
2020/09/30 Python
使用css如何制作时间ICON方法实践
2012/11/12 HTML / CSS
日本动漫周边服饰销售网站:Atsuko
2019/12/16 全球购物
海量信息软件测试笔试题
2015/08/08 面试题
介绍一下Ruby中的对象,属性和方法
2012/07/11 面试题
应届生服装设计自我评价
2013/09/20 职场文书
两只小狮子教学反思
2014/02/05 职场文书
国庆节演讲稿范文2014
2014/09/19 职场文书
领导干部个人整改措施落实情况汇报
2014/10/29 职场文书
2016拓展训练心得体会范文
2016/01/12 职场文书
观看《杨善洲》宣传教育片心得体会
2016/01/23 职场文书
2016年妇联“6﹒26国际禁毒日”宣传活动总结
2016/04/05 职场文书
导游词之阳朔遇龙河
2019/12/16 职场文书
Win10 heic文件怎么打开 ? Win10 heic文件打开教程
2022/04/06 数码科技