2015-01-13 4 views
0

Я создаю файл журнала, используя библиотеку протоколов Pythons. Когда я пытаюсь прочитать его с питоном и распечатать его на HTML-страницу (с помощью колба), я получаю:Ошибка чтения Unicode Файл журнала Python (ведение журнала)

<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) 

Как решить эту проблему?

ответ

0

Обработчики файлов пакета 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') 
0

Я не знаком с колбы, но если вы можете получить содержимое журнала в виде строки. Вы можете кодировать его на utf-8 следующим образом:

string = string.encode('utf-8') # string is the log's contents, now in utf-8

Смежные вопросы