您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

编写仅在Python中附加gzip压缩日志文件

5b51 2022/1/14 8:22:12 python 字数 2949 阅读 530 来源 www.jb51.cc/python

我正在构建一个服务,我从几个源(每个源一个文件)记录纯文本格式日志.我不打算旋转这些日志,因为它们必须永远存在. 为了使这些文件永远变小,我希望我能在飞行中对它们进行gzip.由于它们是日志数据,因此文件压缩得非常好. 在Python中编写仅附加gzip压缩文本文件的好方法是什么,以便以后可以在服务开启和关闭时恢复写入?我并不担心丢失几行,但如果gzip容器本身发生故障并且文件变得不可读,那就不行

概述

为了使这些文件永远变小,我希望我能在飞行中对它们进行gzip.由于它们是日志数据,因此文件压缩得非常好.

Python中编写仅附加gzip压缩文本文件的好方法是什么,以便以后可以在服务开启和关闭时恢复写入?我并不担心丢失几行,但如果gzip容器本身发生故障并且文件变得不可读,那就不行了.

此外,如果它不行,我可以简单地将它们写成纯文本而不用gzipping,如果它不值得麻烦.

> logrotate(旋转,压缩和邮寄系统日志)

您可以将旋转次数设置得如此之高,即第一个文件将被删除in 100 years左右.

在Python 2中,logging.FileHandler采用可以设置为bz2或zlib的@R_502_1820@编码.

这是因为记录uses编解码器模块,后者又将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版本(虽然文档mention bz2作为别名,你实际上必须使用bz2_codec – 至少w / 3.2.3):

>>> import codecs
>>> with codecs.open("on-the-fly-compressed.txt.bz2","bz2_codec") as fh:
...     fh.write(b"Hello World\n")

$bzcat on-the-fly-compressed.txt.bz2 
Hello World

总结

以上是编程之家为你收集整理的编写仅在Python中附加gzip压缩日志文件全部内容,希望文章能够帮你解决编写仅在Python中附加gzip压缩日志文件所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶