python - Python RotatingFileHandler 似乎没有旋转日志
问题描述
我已经使用以下代码设置了一个记录器:
log = logging.getLogger('base')
logfilename = <path to logfile>
logFile = logging.FileHandler(logfilename)
log.setLevel(debug)
logFile.setFormatter(logging.Formatter('[%(asctime)s]: [%(filename)s:%(lineno)d:%(funcName)s]: %(levelname)s :: %(message)s', datefmt='%m-%d-%Y %H:%M:%S'))
log.addHandler(logFile)
由于日志文件很大,我想创建一个循环日志文件。因此,我做了以下更改:
# logFile = logging.FileHandler(logfilename)
logFile = RotatingFileHandler(logfilename, maxBytes=1024) # maxBytes=1024 only for testing
但是,生成的日志文件不会轮换。我仍然得到几 MB 大的日志。我已经清除了所有.pyc
文件。
问题:
- 是否有必要指定备份计数(我需要保留所有日志!因此,如果这是强制性的,我必须给出一些非常大的数字)。
- 我假设它是实际字节(因此在
maxBytes
我的情况下,日志应该每 1 kB 旋转一次),仅此而已。我对么? - 是否有一个最小数量,
maxBytes
低于哪个轮换无效?(我想不会)
我使用 Python 2.7.14 (Anaconda) 和 3.6.4 (Anaconda)。
解决方案
从文档:
如果 maxBytes 或 backupCount 中的任何一个为零,则永远不会发生翻转,因此您通常希望将 backupCount 设置为至少 1,并且 maxBytes 不为零。
这意味着如果没有设置backupCount
(默认值为 0),您将不会获得任何翻转功能
我需要保留所有日志!因此,如果这是强制性的,我必须给出一些非常大的数字
是的!设置一些非常大的数字,并且可能每隔一段时间添加另一个脚本来备份旧文件
推荐阅读
- ios - iPhone模拟器的Apple M1问题
- python - 无法上传和显示 django 表单
- c# - 右对齐自定义货币datagridview
- wordpress - 无法在 Safari 上访问 WordPress 网站
- google-cloud-dlp - 错误:在 KmsWrappedCryptoKey 中,“crypto_key_name”:必须来自位置“全局”
- node.js - 从部署在 GCP 中的 Node JS 应用程序调用经过身份验证的 HTTP 云函数的最佳方法是什么?
- android - 如何在 Android 上创建 Pin 键盘
- ios - 运行 react-native run-ios --simulator='iPhone 11' 后反应原生错误
- node.js - 更新另一个人的收集统计信息的并发问题
- html - 如何保持相同的伪元素位置