我已经使用下面的代码设置了一个记录器: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' 一起添加到文件处理程序中,并根据下面评论中的建议删除命名参数文件名,但无济于事。
1 回答

隔江千里
TA贡献1906条经验 获得超10个赞
事实证明,在项目的其他地方设置了一个记录器,该记录器使用 io.BytesIO() 作为流处理程序。这导致记录器期望一个记录器的字节数和另一个记录器的 str 。删除其他日志实现解决了这个问题。
添加回答
举报
0/150
提交
取消