将编码参数添加到 logging.basicConfig

新手上路,请多包涵
阅读 996
2 个回答

在您的情况下,避免使用 basicConfig() 会更容易 - 只需创建处理程序并以编程方式添加它(确保代码只运行一次),例如:

 root_logger= logging.getLogger()
root_logger.setLevel(logging.DEBUG) # or whatever
handler = logging.FileHandler('test.log', 'w', 'utf-8') # or whatever
handler.setFormatter(logging.Formatter('%(name)s %(message)s')) # or whatever
root_logger.addHandler(handler)

这或多或少是 basicConfig() 所做的。

更新: 在Python 3.9及更高版本中, basicConfig()encodingerrors 关键字参数可用。

原文由 Vinay Sajip 发布,翻译遵循 CC BY-SA 4.0 许可协议

您可以传递特定文件处理程序的列表:

 import logging

logging.basicConfig(handlers=[logging.FileHandler(filename="./log_records.txt",
                                                 encoding='utf-8', mode='a+')],
                    format="%(asctime)s %(name)s:%(levelname)s:%(message)s",
                    datefmt="%F %A %T",
                    level=logging.INFO)

它工作得很好(python 版本 == Python 3.6.8 :: Anaconda, Inc.)

原文由 Jesus Gebrial 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题