Python3 动态压缩记录器模块日志

int*_*_ua 3 python compression logging python-3.x

我找不到压缩我用logger模块编写的日志的方法。

例如:

import logging
import gzip

logger = logging.getLogger('')
z_file = gzip.open('out.log.gz', mode='wb')
logger.addHandler(logging.StreamHandler(z_file))
logger.warning("test".encode("UTF-8"))
Run Code Online (Sandbox Code Playgroud)

双方codecs.opengzip.open给我

--- Logging error ---
Traceback (most recent call last):
  File "/usr/lib/python3.4/logging/__init__.py", line 966, in emit
    stream.write(msg)
  File "/usr/lib/python3.4/gzip.py", line 343, in write
    self.crc = zlib.crc32(data, self.crc) & 0xffffffff
TypeError: 'str' does not support the buffer interface
Run Code Online (Sandbox Code Playgroud)

当我尝试使用他们的处理程序时。我究竟做错了什么?

不包含logger模块的相关问题:Writing append only gzipped log files in Python

fal*_*tru 5

指定encodinggzip.open。您应该使用显式文本模式 ( wt) 来指定编码。只需将字符串传递给日志记录方法。

import logging
import gzip

logger = logging.getLogger('')
z_file = gzip.open('out.log.gz', mode='wt', encoding='utf-8')
logger.addHandler(logging.StreamHandler(z_file))
logger.warning("test")
Run Code Online (Sandbox Code Playgroud)