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

posted @   还是张先森  阅读(1562)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示