【问题标题】:How to encode log file?如何编码日志文件?
【发布时间】:2014-02-19 13:41:51
【问题描述】:

我的代码:

logging.warning('FASE VALIDACIÓN TITULOS DE COLUMNAS DE DATOS NO SUPERADA. compruebe los nombres de los títulos de las columnas en datos.csv)')

.log 文件中的输出:

WARNING:root:FASE VALIDACI�N TITULOS DE COLUMNAS DE DATOS NO SUPERADA. compruebe los nombres de los t�tulos de las columnas en datos.csv)

然后我尝试了这个:

logging.basicConfig(filename=nombreFicheroLog, encoding="utf-8", level=logging.DEBUG)

但它不起作用。然后我尝试了这个:

logging.warning(u'FASE VALIDACIÓN TITULOS DE COLUMNAS DE DATOS NO SUPERADA. compruebe los nombres de los títulos de las columnas en datos.csv)')

但是输出是一样的。

如何对 .log 文件进行编码以支持 UTF-8?

附:我正在使用 Python3。

【问题讨论】:

  • 在 Python 3 中将 u 添加到字符串中没有任何作用。无论如何,字符串在 Python 3 中默认都是 unicode。
  • 当您看到奇怪的 字符时,您如何查看输出的.log 文件?您是否在该 .log 文件的十六进制转储中查看过它? (也许只是日志文件查看器没有正确显示 utf 8。)
  • @Alfe,我正在使用 Pycharm IDE 查看输出文件:设置:文件编码 -> IDE 编码 -> 'UTF-8','Autodetect UTF' 已选中;项目编码 ->

标签: python logging python-3.x encoding


【解决方案1】:

basicConfig 不接受 encoding 参数,但在 Python 3.3 中您可以这样做:

logging.basicConfig(handlers=[logging.FileHandler(nombreFicheroLog, 'w', 'utf-8')], 
                    level=logging.DEBUG)

对于较旧的 Python,请参阅 this question

【讨论】:

  • 谢谢@JanneKarila,效果很好。但现在,我需要阅读它在Advanced Tutorial 中的工作原理;我不喜欢使用我不知道如何使用的东西。 ;-)
  • 谢谢。我不知道 FileHandler 必须在数组中。来,有我的↑。
猜你喜欢
  • 1970-01-01
  • 2013-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-04
  • 2018-06-12
  • 1970-01-01
相关资源
最近更新 更多