news 2026/10/1 3:01:19

Python使用RotatingFileHandler实现日志自动切割

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python使用RotatingFileHandler实现日志自动切割

Python使用RotatingFileHandler实现日志自动切割

程序运行时间长了以后,日志文件可能不断增大,不仅占用磁盘空间,打开和检索也会越来越慢。Python自带的RotatingFileHandler可以按照文件大小自动切割日志,并保留指定数量的历史文件。

一、基本实现

importloggingfromlogging.handlersimportRotatingFileHandler logger=logging.getLogger("my_app")logger.setLevel(logging.INFO)handler=RotatingFileHandler(filename="app.log",maxBytes=5*1024*1024,backupCount=5,encoding="utf-8")formatter=logging.Formatter("%(asctime)s | %(levelname)s | %(message)s")handler.setFormatter(formatter)logger.addHandler(handler)logger.info("程序启动")logger.warning("这是一条警告日志")logger.error("这是一条错误日志")

二、参数说明

maxBytes表示单个日志文件允许的最大大小。示例中设置为5MB,当app.log超过限制后,程序会自动生成:

app.log app.log.1 app.log.2 app.log.3

backupCount表示最多保留多少个历史日志文件。超过设定数量后,最旧的日志会被自动删除。

三、避免日志重复输出

如果初始化代码被多次调用,同一个处理器可能被重复添加,导致每条日志输出多次。可以在添加前进行判断:

ifnotlogger.handlers:logger.addHandler(handler)

完整写法:

importloggingfromlogging.handlersimportRotatingFileHandlerdefcreate_logger():logger=logging.getLogger("my_app")logger.setLevel(logging.INFO)iflogger.handlers:returnlogger handler=RotatingFileHandler("app.log",maxBytes=5*1024*1024,backupCount=5,encoding="utf-8")handler.setFormatter(logging.Formatter("%(asctime)s | %(levelname)s | %(filename)s:%(lineno)d | %(message)s"))logger.addHandler(handler)returnlogger app_logger=create_logger()app_logger.info("日志系统初始化完成")

四、适用场景

这种方式适合小型脚本、定时任务、爬虫和后台服务。对于高并发或多进程程序,还需要考虑多个进程同时写入同一文件的问题。

总结

通过RotatingFileHandler可以在不安装第三方模块的情况下实现日志切割,避免单个日志文件无限增长。合理设置文件大小和保留数量,也能减少磁盘空间被日志占满的风险。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/1 3:00:20

RL-算法演进史05:Model-Based强化学习算法演进路线04

下一节: 5.15 MCTS与Planning路线:从Dyna-Q到AlphaGo、AlphaZero、MuZero 重点分析: 为什么Model-Based RL存在两条路线: Dreamer路线(学习Policy) MuZero路线(搜索Planning) MCTS数学原理; AlphaGo如何结合深度网络; AlphaZero如何去掉人类棋谱; MuZero如何在未知…

作者头像 李华
网站建设 2026/10/1 3:00:04

AI如何自动识别资格审查串标风险?智能评审项目实践

这里写自定义目录标题欢迎使用Ma rkdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个…

作者头像 李华
网站建设 2026/10/1 2:58:58

多媒体应用26-909(补)

音频数字化三步:采样、____、编码。→ 量化。重点:顺序固定不可颠倒(2020 填空)。音频三要素:采样频率、量化位数、____。→ 声道数。重点:三者共同决定音质与数据量。奈奎斯特定理:采样频率≥最…

作者头像 李华
网站建设 2026/10/1 2:57:49

Qt+FFmpeg+OpenCV‑DNN 实现本地或 RTMP/RTSP 实时 YOLOv5 目标检测播放器

一、前言 本项目完整实现工业可用的视频 AI 播放器:FFmpeg 原生解码视频流,独立解码线程、独立 AI 检测线程,队列满丢弃旧帧,断流指数退避重连,本地视频 / 图片也支持检测,QPainter 绘制检测框&#xff0c…

作者头像 李华
网站建设 2026/10/1 2:57:46

15 Pro 能用、15 不能用:Siri AI 划了三档

iOS 27 推送的同时,苹果公布了 Siri AI 支持名单。名单里最扎眼的不是谁在,而是谁不在:iPhone 15 Pro 能用,iPhone 15 不能用;iPad 要 M1 起步;完整语音功能还得单独跨过一道「统一内存不少于 12GB」的线。…

作者头像 李华