编写仅在Python中附加gzip压缩日志文件
发布时间:2020-12-16 22:59:09 所属栏目:Python 来源:网络整理
导读:我正在构建一个服务,我从几个源(每个源一个文件)记录纯文本格式日志.我不打算旋转这些日志,因为它们必须永远存在. 为了使这些文件永远变小,我希望我能在飞行中对它们进行gzip.由于它们是日志数据,因此文件压缩得非常好. 在Python中编写仅附加gzip压缩文本文
我正在构建一个服务,我从几个源(每个源一个文件)记录纯文本格式日志.我不打算旋转这些日志,因为它们必须永远存在.
为了使这些文件永远变小,我希望我能在飞行中对它们进行gzip.由于它们是日志数据,因此文件压缩得非常好. 在Python中编写仅附加gzip压缩文本文件的好方法是什么,以便以后可以在服务开启和关闭时恢复写入?我并不担心丢失几行,但如果gzip容器本身发生故障并且文件变得不可读,那就不行了. 此外,如果它不行,我可以简单地将它们写成纯文本而不用gzipping,如果它不值得麻烦. 解决方法
注意:在unix系统上,您应该认真考虑使用为此确切任务编写的外部程序:
> 您可以将旋转次数设置得如此之高,即第一个文件将被删除in 100 years左右. 在Python 2中,logging.FileHandler采用可以设置为bz2或zlib的关键字参数编码. 这是因为记录uses编解码器模块,后者又将bz2(或zlib)视为编码: >>> import codecs >>> with codecs.open("on-the-fly-compressed.txt.bz2","w","bz2") as fh: ... fh.write("Hello Worldn") $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 Worldn") $bzcat on-the-fly-compressed.txt.bz2 Hello World (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |