注:在UNIX系統上,你應該認真考慮使用外部程序,對這個確切的任務寫:
可以設置轉數這麼高,那第一個文件就會被刪除in 100 years左右。
在Python 2,logging.FileHandler
需要一個關鍵字參數encoding
可以設置到bz2
或zlib
。
這是因爲logging
uses的codecs
模塊,這又會將bz2
(或zlib
)作爲編碼:
>>> 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的版本(雖然該文檔mentionbz2
爲別名,則實際上必須使用bz2_codec
- 至少w/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
即使您不打算旋轉日誌,爲何不中斷輸出並每隔一段時間啓動一個新文件?然後你可以在文件完成後運行gzip。 –
@ DavidZaslavsky的答案是傳統的解決方案。這只是標準的日誌輪換,除了你省略了刪除舊文件的部分。 – abarnert