TypeError при записи в файл журнала - PullRequest
0 голосов
/ 12 сентября 2018

Я настроил регистратор, используя код ниже:

logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)
handler = logging.FileHandler(filename='application.log', mode='a+')
handler.setLevel(logging.DEBUG)
logger.addHandler(handler)

Всякий раз, когда я пытаюсь записать в журнал, используя следующий код:

logger.info("Application Started")

Я получаюследующая трассировка:

--- Logging error ---
Traceback (most recent call last):
  File "/usr/lib/python3.7/logging/__init__.py", line 985, in emit
    stream.write(msg)
TypeError: a bytes-like object is required, not 'str'
Call stack:
  File "/home/<user>/Code/<app_name>/src/<app_name>.py", line 48, in <module>
    main()
  File "/home/<user>/Code/<app_name>/src/<app_name>.py", line 42, in main
    logger.info("Application Started")
Message: 'Application Started'
Arguments: ()

Я знаю, что с учетом вышеизложенного исключения можно ожидать, что файл будет открыт в двоичном режиме, но это не так, я открываю только в режиме «+».

Обновление Я попытался добавить encoding = 'utf-8' в обработчик файлов вместе с mode = 'a + t' и удалить имя файла с именованным параметром согласно рекомендациям вкомментарии ниже безрезультатно.

1 Ответ

0 голосов
/ 12 сентября 2018

Оказывается, что в другом месте проекта был настроен регистратор, который использует io.BytesIO () в качестве обработчика потока.Это привело к тому, что регистратор ожидал байтов для одного регистратора и str для другого.Удаление другой реализации ведения журнала решило проблему.

...