python - Python旋转记录器,如何防止重新启动覆盖日志文件?
问题描述
我正在使用旋转记录器每小时创建一个日志文件
import logging
import logging.config
import logging.handlers
tmppath = path.abspath(path.join(path.dirname(__file__), '..', '..', 'logging.ini'))
logging.config.fileConfig(tmppath)
logger = logging.getLogger("main.main")
logging.ini 包含这些规则,这些规则说使用文件名 /var/log/myprogram/main.log并每小时启动一个新文件。
[loggers]
keys=root,main
[handlers]
keys=fileHandler, consoleHandler
....
[handler_fileHandler]
class=logging.handlers.TimedRotatingFileHandler
formatter=myFormatter
args=('/var/log/myprogram/main.log', 'm', 60, 336, )
[formatter_myFormatter]
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
datefmt=
这个记录器工作得很好,每小时创建一个文件。
问题是,当程序重新启动时,当前日志文件“/var/log/myprogram/main.log”被覆盖,所以我失去了一些日志时间。
我可以尝试在激活日志记录之前找到日志文件并尝试“手动”重命名它,但这看起来真的很hacky。
有没有办法将日志记录配置为从不覆盖日志文件,但总是追加?
对于我的用例,如果重新启动后记录时间超过一个小时,这是可以接受的。
解决方案
推荐阅读
- android - 如何使用 Google 的 installreferrer 库测试安装引荐来源网址?
- regex - 正则表达式匹配一个字符,没有特定的顺序
- javascript - 确保没有空值的最佳方法是什么
- delphi - 如何在运行时将 PNG 图像从资源加载到 TImage?
- c# - 我的代码符合但未在 C# 中显示椭圆
- ansible - 如何使用 ansible nios 模块为单个主机分配多个 IP
- amazon-web-services - Jenkins 突然开始无法在 Amazon EKS 中预置代理
- python-3.x - 使用python将文本文件中的行附加到另一个文本文件
- c++ - std::string `s` 通过 `&s[0]` 转换为 char* - 如何/为什么这样工作?
- python - 如何提取此 numpy 数组中的第二个元素,其中每行的第二个元素是另一个 numpy 数组