猿问

写入日志文件时出现类型错误

我已经使用下面的代码设置了一个记录器:


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

我知道,鉴于上述例外情况,您会希望文件以二进制模式打开,但事实并非如此,我只使用“a+”模式打开。


更新 我已经尝试将 encoding='utf-8' 与 mode='a+t' 一起添加到文件处理程序中,并根据下面评论中的建议删除命名参数文件名,但无济于事。


慕田峪4524236
浏览 115回答 1
1回答

隔江千里

事实证明,在项目的其他地方设置了一个记录器,该记录器使用 io.BytesIO() 作为流处理程序。这导致记录器期望一个记录器的字节数和另一个记录器的 str 。删除其他日志实现解决了这个问题。
随时随地看视频慕课网APP

相关分类

Python
我要回答