python logging按时间切割日志
今天发现一个问题,之前的一个程序运行时间久了,日志文件越来越大.感觉这里可以优化一下,故上网搜索了一番.
先搬运相关知识点:
logging 中常用的日志处理方法和类
1. StreamHandler:logging.StreamHandler,日志输出到流,可以是sys.stderr,sys.stdout或者文件,这个方法通常用来将日志信息输出到控制台
2. FileHandler:logging.FileHandler,日志输出到文件,指定文件,将日志信息写入到文件中
3. BaseRotatingHandler:logging.handlers.BaseRotatingHandler,基本的日志轮转方式,这个类是日志轮转的基类,后面日志按时间轮转,按大小轮转的类都继承于此。轮转的意思就是保留一定数量的日志量,如设置保持7天日志,则会自动删除旧的日志,只保留最近7天
4. RotatingHandler:logging.handlers.RotatingHandler,继承BaseRotatingHandler,支持日志文件按大小轮转
5. TimeRotatingHandler:logging.handlers.TimeRotatingHandler,继承BaseRotatingHandler,支持日志文件按时间轮转
6. SocketHandler:logging.handlers.SocketHandler,远程输出日志到TCP/IP sockets
7. DatagramHandler:logging.handlers.DatagramHandler,远程输出日志到UDP sockets
8. SMTPHandler:logging.handlers.SMTPHandler,远程输出日志到邮件地址
9. MemoryHandler:logging.handlers.MemoryHandler,日志输出到内存中的指定buffer
10. HTTPHandler:logging.handlers.HTTPHandler,通过"GET"或者"POST"远程输出到HTTP服务器
TimedRotatingFileHandler 的主要参数:
1. filename: 指定日志文件的名字,会在指定的位置创建一个 filename 文件,然后会按照轮转数量创建对应数量的日志文件,每个轮转文件的文件名为 filename 拼接时间,默认YY-mm-DD_HH-MM-SS,可以自定义。
2. when: 指定日志文件轮转的时间单位
S - Seconds
M - Minutes
H - Hours
D - Days
midnight - roll over at midnight
W{0-6} - roll over on a certain day; 0 - Monday
3. interval: 指定日志文件切割时间,如 when='S', interval=60,表示每60秒日志切割一次,when='D', interval=1,表示每天切割一次。
4. backupCount: 指定日志文件保留的数量,指定一个整数,则日志文件只保留这么多个,自动删除旧的文件。
最后附上我的源码:
import logging
from logging.handlers import TimedRotatingFileHandler
def set_log(filename):
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
file_format = logging.Formatter('%(asctime)s Line%(lineno)d [%(levelname)s] %(message)s')
time_handler = TimedRotatingFileHandler(filename=filename, when='D', interval=1, backupCount=7)
time_handler.setLevel(logging.INFO)
time_handler.setFormatter(file_format)
logger.addHandler(time_handler)
参考: https://www.cnblogs.com/xianyulouie/p/11041777.html
参考: https://blog.csdn.net/weixin_43790276/article/details/101944628
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)