答案 0 :(得分:2)
由于在Windows平台上无法更改打开的文件,因此可以说OP并不是在寻找跨平台的解决方案。
在这种情况下,logging.handlers.WatchedFileHandler
是在记录的文件发生更改时继续记录的适当解决方案。
来自docs:
WatchedFileHandler类,位于logging.handlers模块中, 是一个FileHandler,它监视它正在登录的文件。如果是文件 更改,关闭并使用文件名重新打开。
没有可用的旋转和监视文件处理程序,因此必须使用此解决方案将旋转移动到logrotate
或类似。
或者使用您的TimedRotatingHandler
补丁,除了您已经使用的代码之外,还需要正确关闭并重新打开文件句柄,以匹配WatchedFileHandler
的内容。
答案 1 :(得分:0)
处理它的最跨平台的方法是只采取旧的"文件,保留最新文件。 这甚至可以在不改变处理程序实现的情况下工作,并且不会在不同平台下失败。