我有一个Python2应用程序,它通过结构日志库记录日志,而下游的日志是使用键/值语法捕获和提取的。但是,当涉及unicode字符串时,提取不起作用-u被放在unicode字符串的前面,这破坏了解析器。
是否可以将KeyValueRenderer配置为排除u‘?
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打印它们的方法中的行为。
发布于 2017-09-26 23:21:07
这就是structlog.processors.UnicodeEncoder的用途。它接受unicode字符串并将其编码为字节字符串。
一旦使用了Python3,您就希望structlog.processors.UnicodeDecoder阻止b前缀。
https://stackoverflow.com/questions/45990467
复制相似问题