
本文旨在帮助开发者掌握如何使用 Python 的 `logging` 模块,实现每日自动生成不同日志文件的功能。我们将探讨如何修改现有 `FileHandler` 的文件名,以及如何使用 `TimedRotatingFileHandler` 实现更便捷的日志文件按时间滚动。通过本文,你将能够灵活地管理你的应用程序日志,并根据日期进行归档。
在实际应用中,我们经常需要按日期对日志进行分割,方便管理和维护。Python 的 logging 模块提供了多种方式来实现这个需求。本文将介绍两种常用的方法:手动修改 FileHandler 的文件名和使用 TimedRotatingFileHandler。
这种方法的核心在于,当需要切换到新的日志文件时,手动修改 FileHandler 对象的 baseFilename 属性,并关闭当前的 FileHandler。这样,当下次写入日志时,logging 模块会自动打开新的文件。
以下是一个示例:
立即学习“Python免费学习笔记(深入)”;
import logging as log
import sys
import os
from datetime import datetime
# 初始日志文件配置
log_file = f'{datetime.now().strftime("%m.%d.%Y")}.log'
log_fh = log.FileHandler(log_file)
log_sh = log.StreamHandler(sys.stdout)
log_format = f'[{datetime.now()}] %(levelname)s: %(message)s'
log_level = 'INFO'
log.basicConfig(format=log_format, level=log_level, handlers=[log_sh, log_fh])
log.info('Initial log entry')
# 切换到新的日志文件
new_filename = 'new_log.log'
log_fh.baseFilename = os.path.abspath(new_filename)
log_fh.close()
log.info('Log entry after filename change')
# 查找并修改所有 FileHandler
filename = 'another.log'
for handler in log.getLogger().handlers:
if isinstance(handler, log.FileHandler):
handler.baseFilename = os.path.abspath(filename)
handler.close()
log.info('Log entry after changing all FileHandlers')代码解释:
注意事项:
TimedRotatingFileHandler 是 logging.handlers 模块提供的一个强大的工具,它可以根据时间自动切换日志文件。
以下是一个示例:
立即学习“Python免费学习笔记(深入)”;
import logging as log
import sys
from logging.handlers import TimedRotatingFileHandler
from datetime import datetime
# 使用 TimedRotatingFileHandler
log_trfh = TimedRotatingFileHandler('time_rotating', when='D', interval=1)
log_sh = log.StreamHandler(sys.stdout)
log_format = f'[{datetime.now()}] %(levelname)s: %(message)s'
log_level = 'INFO'
log.basicConfig(format=log_format, level=log_level, handlers=[log_sh, log_trfh])
log.info('Log entry using TimedRotatingFileHandler')
# 模拟多次日志写入
for i in range(5):
log.info(f'Log entry {i+1}')代码解释:
TimedRotatingFileHandler 的参数说明:
注意事项:
本文介绍了两种在 Python 中实现每日生成不同日志文件的方法。手动修改 FileHandler 的文件名比较灵活,但需要手动管理文件的切换。TimedRotatingFileHandler 则更加方便,它可以自动根据时间切换日志文件,并管理旧的日志文件。选择哪种方法取决于你的具体需求。在实际应用中,可以根据项目的复杂度和日志管理的需求选择合适的方法。
以上就是Python Logging:每日生成不同日志文件的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号