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实现多线程暴力破解登陆路由器功能代码分享
Jan 04 Python
python实现定时同步本机与北京时间的方法
Mar 24 Python
简单易懂的python环境安装教程
Jul 13 Python
用Python写王者荣耀刷金币脚本
Dec 21 Python
python爬虫 使用真实浏览器打开网页的两种方法总结
Apr 21 Python
一行代码让 Python 的运行速度提高100倍
Oct 08 Python
对Python中内置异常层次结构详解
Oct 18 Python
下载官网python并安装的步骤详解
Oct 12 Python
基于python使用tibco ems代码实例
Dec 20 Python
Pycharm小白级简单使用教程
Jan 08 Python
在Python 的线程中运行协程的方法
Feb 24 Python
python爬取网易云音乐热歌榜实例代码
Aug 07 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 stripos()函数及注意事项的分析
2013/06/08 PHP
浅谈PHP的反射API
2017/02/26 PHP
thinkPHP框架中执行原生SQL语句的方法
2017/10/25 PHP
php在windows环境下获得cpu内存实时使用率(推荐)
2018/02/08 PHP
使用SMB共享来绕过php远程文件包含的限制执行RFI的利用
2019/05/31 PHP
不用ajax实现点击文字即可编辑的方法
2007/12/16 Javascript
javascript中使用replaceAll()函数实现字符替换的方法
2010/12/25 Javascript
JS中prototype关键字的功能介绍及使用示例
2013/07/21 Javascript
JS中实现简单Formatter函数示例代码
2014/08/19 Javascript
jQuery中next方法用法实例
2015/04/24 Javascript
jquery实现鼠标拖拽滑动效果来选择数字的方法
2015/05/04 Javascript
深入浅析Vue中的 computed 和 watch
2018/06/06 Javascript
vue中引入第三方字体文件的方法示例
2018/12/17 Javascript
JavaScript实现雪花飘落效果
2020/12/27 Javascript
Python 内置函数complex详解
2016/10/23 Python
python中子类继承父类的__init__方法实例
2016/12/15 Python
快速了解Python开发中的cookie及简单代码示例
2018/01/17 Python
Sanic框架Cookies操作示例
2018/07/17 Python
Python 利用scrapy爬虫通过短短50行代码下载整站短视频
2018/10/29 Python
python实现本地批量ping多个IP的方法示例
2019/08/07 Python
导入tensorflow时报错:cannot import name 'abs'的解决
2019/10/10 Python
python利用Excel读取和存储测试数据完成接口自动化教程
2020/04/30 Python
Toppik顶丰增发纤维官网:解决头发稀疏
2017/12/30 全球购物
德国黑胶唱片、街头服装及运动鞋网上商店:HHV
2018/08/24 全球购物
如何让Java程序执行效率更高
2014/06/25 面试题
大学班级干部的自我评价分享
2014/02/10 职场文书
安全生产汇报材料
2014/02/17 职场文书
《孔繁森》教学反思
2014/04/17 职场文书
解除劳动合同协议书范本
2014/09/13 职场文书
交通安全月活动总结
2015/05/08 职场文书
2015年小学一年级班主任工作总结
2015/05/21 职场文书
交通事故案件代理词
2015/05/23 职场文书
新农村建设指导员工作总结
2015/08/13 职场文书
2019暑假学生安全口号
2019/06/27 职场文书
HTML+css盒子模型案例(圆,半圆等)“border-radius” 简单易上手
2021/05/10 HTML / CSS