【问题标题】:Pyhton3 log unicode errorPython3 记录 unicode 错误
【发布时间】:2017-05-12 06:17:24
【问题描述】:

我将烧瓶服务器日志发送到 logstash。我使用了以下代码。

import logging, logging.handlers

logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
format = logging.Formatter('%(asctime)-s %(levelname)s %(thread)d --- [%(name)s] %(module)s.%(funcName)s :             %(message)s')

command_line = logging.StreamHandler()
command_line.setLevel(logging.DEBUG)
command_line.setFormatter(format)
logger.addHandler(command_line)

logs = logging.handlers.DatagramHandler('localhost', 5000)
logs.setLevel(logging.DEBUG)
logs.setFormatter(format)
logger.addHandler(logs)

但在 logstash 和 kibana 仪表板消息中包含 unicode 字符作为 follwong

\u0000\u0000\u0002\xF3}q\u0000(X\v\u0000\u0000\u0000processNameq\u0001X\v\u0000\u0000\u0000MainProcessq\u0002X\n\u0000\u0000\u0000\stack_infoq\u0003NX\ u0000\u0000\u0000createdq\u0004GA\xD6ET\x86u\xE4mX\n\u0000\u0000\u0000threadNameq\u0005X\n\u0000\u0000\u0000MainThreadq\u0006X\u0006\u0000\000aX\u0000\u0000\u0000x u0000_internalq\bX\b\u0000\u0000\u0000pathnameq\tXc\u0000\u0000\u0000/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/werkzeug/_internal.pyq\nX\ t\u0000\u0000\u0000levelnameq\vX\u0004\u0000\u0000\u0000INFOq\fX\u000F\u0000\u0000\u0000relativeCreatedq\rG@\xA8\x9C\xD3y\x80\u0000\u0000000000X\u0000\uthreadq \u000EL140736587924416L\nX\b\u0000\u0000\u0000funcNameq\u000FX\u0004\u0000\u0000\u0000_logq\u0010X\u0003\u0000\u0000\u0000msgq\u000000\u000000\u00000 * 在http://127.0.0.1:5005/ 上运行(按 CTRL+C 退出)q\u0012X\b\u0000\u0000\u0000exc_textq\u0013NX\u0005\u0000\u0000\u0000msecsq\u0014G@\x8AP\x899\u0000\u0000\u0000 \u0000\u0000\u0000asctimeq\u0015X\u0017\u0000\u0000\u00002017-05-12 11:41:37,842q\u0016X\a\u0000\u0000\u0000processq\u0017M\xE3,X\b\u0000\u0000\u0000exc_infoq\u0018NX\u0004\u0000\u0000\u0000nameq\u000000000000000000000000000000 \u001AX\u0006\u0000\u0000\u0000linenoq\eKWX\b\u0000\u0000\u0000filenameq\u001CX\f\u0000\u0000\u0000_internal.pyq\u001DX\u0004\u0000\u000000000000000000000000000000000000000000000000000000000000000000000000000000000000000X \u0000messageq\u001FX;\u0000\u0000\u0000 * 在http://127.0.0.1:5005/ 上运行(按 CTRL+C 退出)q X\a\u0000\u0000\u0000levelnoq!K\u0014u。

我该如何解决这个问题?

【问题讨论】:

  • 你不能在支持 Unicode 的编辑器中打开它吗?例如记事本++
  • 你也可以发布你的 Logstash 配置吗?

标签: python logging unicode logstash


【解决方案1】:

您可以使用以下库替换日志处理程序:

https://github.com/vklochan/python-logstash

所以你的代码可以这样重写:

import logging, logstash

logger = logging.getLogger()
logger.setLevel(logging.DEBUG)

command_line = logstash.TCPLogstashHandler('localhost', 5000, version=1)
command_line.setLevel(logging.DEBUG)
logger.addHandler(command_line)

logs = logstash.LogstashHandler('localhost', 5000, version=1)
logs.setLevel(logging.DEBUG)
logger.addHandler(logs)

【讨论】:

    猜你喜欢
    • 2016-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-13
    • 2018-08-07
    • 1970-01-01
    • 2016-09-03
    相关资源
    最近更新 更多