Python日志操作类与RotatingFileHandler配置详解

Felix
Felix
发布时间:2026-10-13| 5人浏览过
原创

本文介绍如何在Python项目中封装日志操作类,并结合RotatingFileHandler实现日志自动轮转。通过示例展示INetLogger类的单例模式实现,以及logger.ini配置文件中对日志级别、输出格式和文件轮转策略(如大小2000000字节、保留9个文件)的具体配置方法,帮助开发者在生产环境中有效管理日志文件。

Python日志管理类实现与RotatingFileHandler配置指南

本文分享一个Python日志文件操作类的实现及其应用场景,供读者参考学习。

在软件开发过程中,日志记录是不可或缺的一环,它能帮助开发者掌握程序的运行状态。特别是在生产环境部署时,通常无法直接进行调试(debug),虽然部分场景支持远程调试,但大多数情况下仍需依赖常规的日志记录方式。例如在Java生态中,常使用log4j、slf4j或logback等第三方组件来管理日志。

那么,在Python中如何实现类似的日志功能呢?Python标准库本身已提供了完善的日志处理模块,可直接调用。本文整理并分享了在实际项目中使用的日志实现方案,主要包含以下两个核心部分:

1. 封装日志操作类

2. 配置日志文件(包括handler、logger及日志存储路径等)

日志操作类封装

以下是日志操作类的具体实现代码。


'''
Created on 2012-2-17
@author: yihaomen.com
'''
import logging.config
import os
class INetLogger:
  log_instance = None
  @staticmethod
  def InitLogConf():
    currentDir=os.path.dirname(__file__)
    INetLogger.log_instance = logging.config.fileConfig(currentDir+os.path.sep+"logger.ini")
  @staticmethod
  def GetLogger(name = ""):
    if INetLogger.log_instance == None:
      INetLogger.InitLogConf()
    INetLogger.log_instance = logging.getLogger(name)
    return INetLogger.log_instance
if __name__ == "__main__":
  logger = INetLogger.GetLogger()
  logger.debug("debug message")
  logger.info("info message")
  logger.warn("warn message")
  logger.error("error message")
  logger.critical("critical message")
  logHello = INetLogger.GetLogger("root")
  logHello.info("Hello world!")

日志配置文件详解

日志配置文件与上述类文件位于同一目录下,文件名为logger.ini。


[loggers]
keys=root,mysql,socket
[handlers]
keys=consoleHandler,rotateFileHandler
[formatters]
keys=simpleFormatter
[formatter_simpleFormatter]
format=[%(asctime)s][%(levelname)s] [%(filename)s:%(lineno)d] [thread:%(thread)d]: %(message)s
[logger_root]
qualname=root
level=DEBUG
handlers=consoleHandler,rotateFileHandler
[logger_mysql]
qualname=mysql
level=DEBUG
handlers=rotateFileHandler
[logger_socket]
qualname=socket
level=ERROR
handlers=rotateFileHandler
[handler_consoleHandler]
class=StreamHandler
level=DEBUG
formatter=simpleFormatter
args=(sys.stdout,)
[handler_rotateFileHandler]
class=handlers.RotatingFileHandler
level=DEBUG
formatter=simpleFormatter
args=('c:/logs/InetServer.log', 'a', 2000000, 9)

若配置中使用RotatingFileHandler,日志将保存至c:/logs/InetServer.log文件。当日志文件大小超过2000000字节时,系统将自动创建新文件继续记录,并保留最近9天的日志。若将参数调整为30,则可保存最近一个月的日志记录。

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python日志操作技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述内容能对大家的Python程序设计有所帮助。

相关标签:

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

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 算法库。