我有一个Python2应用程序,它通过structlog库记录,下游日志被捕获,使用键/值语法提取。但是,当涉及到unicode字符串时,提取不起作用 - u被预先添加到unicode字符串中,从而破坏了解析器。
是否可以配置KeyValueRenderer以排除你的'?
import structlog
structlog.configure(processors=[structlog.processors.KeyValueRenderer()])
l = structlog.get_logger()
l.error('I am ASCII')
l.error(u'I am Unicode')
结果:
event='I am ASCII'
event=u'I am Unicode'
所需:
event='I am ASCII'
event='I am Unicode'
我知道有些问题需要改变Python对Unicode字符串的全局打印行为 - 但我只是想改变structlog打印它们的方法中的行为。
答案 0 :(得分:0)
这是structlog.processors.UnicodeEncoder的用途。它需要unicode字符串并将它们编码为字节字符串。
使用Python 3后,您希望structlog.processors.UnicodeDecoder阻止b
前缀。