Unicode 错误读取 Python 日志文件(记录)
Unicode error reading Python log file (logging)
我正在使用 Python 的日志记录库创建一个日志文件。当我尝试使用 python 阅读它并将其打印在 html 页面上(使用 Flask)时,我得到:
<textarea cols="80" rows="20">{% for line in log %}{{line}}{% endfor %}
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 36: ordinal not in range(128)
我猜这与日志文件被其他解码器解码有关,但是哪个?
如果有帮助,这是设置日志文件的行:
fileLogger = logging.handlers.TimedRotatingFileHandler(filename = 'log.log', when = 'midnight', backupCount = 30)
我该如何解决这个问题?
logging
包文件处理程序会将您发送给它的任何 Unicode 对象编码为 UTF-8,除非您指定了不同的编码。
再次使用io.open()
读取文件作为UTF-8数据,你会再次得到unicode
个对象,非常适合Jinja2:
import io
log = io.open('log.log', encoding='utf8')
您也可以为 TimedRotatingFileHandler
指定不同的编码,但 UTF-8 是一个很好的默认值。如果您想选择不同的编码,请使用 encoding
关键字参数:
fileLogger = logging.handlers.TimedRotatingFileHandler(
filename='log.log', when='midnight', backupCount=30,
encoding='Latin1')
我对flask不是很熟悉,但是如果你能把日志的内容抓取成一个字符串。您可以像这样将其编码为 utf-8:
string = string.encode('utf-8') # string is the log's contents, now in utf-8
我正在使用 Python 的日志记录库创建一个日志文件。当我尝试使用 python 阅读它并将其打印在 html 页面上(使用 Flask)时,我得到:
<textarea cols="80" rows="20">{% for line in log %}{{line}}{% endfor %}
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 36: ordinal not in range(128)
我猜这与日志文件被其他解码器解码有关,但是哪个?
如果有帮助,这是设置日志文件的行:
fileLogger = logging.handlers.TimedRotatingFileHandler(filename = 'log.log', when = 'midnight', backupCount = 30)
我该如何解决这个问题?
logging
包文件处理程序会将您发送给它的任何 Unicode 对象编码为 UTF-8,除非您指定了不同的编码。
再次使用io.open()
读取文件作为UTF-8数据,你会再次得到unicode
个对象,非常适合Jinja2:
import io
log = io.open('log.log', encoding='utf8')
您也可以为 TimedRotatingFileHandler
指定不同的编码,但 UTF-8 是一个很好的默认值。如果您想选择不同的编码,请使用 encoding
关键字参数:
fileLogger = logging.handlers.TimedRotatingFileHandler(
filename='log.log', when='midnight', backupCount=30,
encoding='Latin1')
我对flask不是很熟悉,但是如果你能把日志的内容抓取成一个字符串。您可以像这样将其编码为 utf-8:
string = string.encode('utf-8') # string is the log's contents, now in utf-8