我已使用以下代码设置了记录器:
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'一起添加到文件处理程序中,并按照以下注释中的建议删除命名的参数文件名,但无济于事。
答案 0 :(得分:0)
事实证明,正在使用io.BytesIO()作为流处理程序的项目中的其他地方设置了一个记录器。这导致记录器期望一个记录器的字节,并期望另一个记录器的字节。删除其他日志记录实现可以解决该问题。