注意:在 unix 系统上,您应该认真考虑使用为这个确切任务编写的外部程序:
您可以将旋转次数设置得如此之高,以至于第一个文件将在 100 年左右被删除。
在 Python 2 中,logging.FileHandler
接受一个encoding
可以设置为bz2
or的关键字参数zlib
。
这是因为logging
使用了该codecs
模块,该模块又将bz2
(or zlib
) 视为encoding:
>>> import codecs
>>> with codecs.open("on-the-fly-compressed.txt.bz2", "w", "bz2") as fh:
... fh.write("Hello World\n")
$ bzcat on-the-fly-compressed.txt.bz2
Hello World
Python 3 版本(尽管文档中提到 bz2
了别名,但您实际上必须使用bz2_codec
- 至少使用 3.2.3):
>>> import codecs
>>> with codecs.open("on-the-fly-compressed.txt.bz2", "w", "bz2_codec") as fh:
... fh.write(b"Hello World\n")
$ bzcat on-the-fly-compressed.txt.bz2
Hello World