Python logging日志库空间不足问题解决

星野
星野
发布时间:2026-10-14| 6人浏览过
原创

针对Python项目中因未配置日志自动滚动导致的磁盘空间告警问题,本文介绍了使用logging.handlers.TimedRotatingFileHandler进行日志轮转的配置方法。通过详解when、interval和backupCount三个关键参数,结合代码示例展示了如何限制日志保留数量并随时间自动清理,从而有效解决磁盘空间占用过高的问题。

日志空间不足问题背景

项目中使用的日志库是基于Python官方logging模块封装的,但一直未配置日志自动滚动功能,导致经常收到磁盘空间已满的告警,需要人工清理。为此,我们深入研究并解决了这一问题。

参考文档:https://docs.python.org/2/library/logging.handlers.html

TimedRotatingFileHandler参数详解

TimedRotatingFileHandler的关键参数有三个。

when、interval、backupCount

when用于指定滚动的时间单位,可选值包括天、小时、分钟、秒等;interval指定经过多少个when单位后执行一次日志滚动;backupCount则用于设定最多保留的日志文件数量。

结合这三个参数,即可实现日志随时间自动滚动,并限制日志文件的总数量。

代码示例与结果验证

示例代码:


#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys
import os
import time
import logging
import logging.handlers

if __name__ == '__main__':
  if len(sys.argv) != 2:
    print('Usage:%s log_name' % (sys.argv[0]))
    sys.exit(0)

  log_dir = './log'
  log_name = sys.argv[1]
  logger = logging.getLogger(log_name)
  logger.setLevel(logging.DEBUG)

  # init handler
  formatter = logging.Formatter('%(message)s')
  file_time_handler = logging.handlers.TimedRotatingFileHandler(
      os.path.join(log_dir, log_name), "M", 1, 5)
  file_time_handler.setFormatter(formatter)
  file_time_handler.setLevel(logging.DEBUG)
  logger.addHandler(file_time_handler)

  while True:
    time.sleep(1)
    logger.info('Hello world %s' % (time.strftime("%Y/%M/%d-%H:%m:%S")))

运行结果:

从结果可以看出,最早的一条日志记录已被自动清理。

666

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。