写入日志文件

时间:2018-09-12 15:09:03

标签: python python-3.x logging typeerror

我已使用以下代码设置了记录器:

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 个答案:

答案 0 :(得分:0)

事实证明,正在使用io.BytesIO()作为流处理程序的项目中的其他地方设置了一个记录器。这导致记录器期望一个记录器的字节,并期望另一个记录器的字节。删除其他日志记录实现可以解决该问题。