在 python 中压缩(归档)旧日志文件
我正在 Python 中使用标准记录器库。例如,有 RotatingFileHandler,可以每天轮换日志文件。
但这只是重命名它们。如果它不仅可以重命名,还可以将旧文件放入 zip(或 gz、bzip 等)存档中,那就太好了。
有没有简单的方法可以实现这一目标?
I'm using standart logger library in Python. There are RotatingFileHandler, that can rotate log files dayily, for example.
But it just renames them. Will be great, if it can not only rename, but also put old files in zip (or gz, bzip, etc) archive.
Is there easy way to achieve this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我认为你最好的选择是扩展 RotatingFileHandler 这样的东西(未测试):
I think your best option is to extend RotatingFileHandler something like this (not tested):
接受的答案将仅存档 1 个文件 - (basefile.log.1) 。其他文件不存档。
此代码将归档除基本文件之外的所有日志文件。
The accepted answer will archive only 1 file-(basefile.log.1) .The other files are not archived.
This code will archive all the log files other than the base file.
您可以通过使用
encoding='bz2-codec'
初始化RotatingFileHandler
来自动写入 bz2 压缩日志文件:PS。 Python3 从有效编码集中删除了 'bz2-codec',因此此解决方案特定于 Python2。
You can automatically write bz2 compressed log files by initializing the
RotatingFileHandler
withencoding='bz2-codec'
:PS. Python3 removed 'bz2-codec' from the set of valid encodings, so this solution is specific to Python2.