我使用的是PythonStructLog版本19.1.0(https://www.structlog.org/en/19.1.0/index.html),在以前的部署中,我使用了相同的版本,在我的日志中没有收到任何redactError消息。但是现在,每当我向日志消息中添加关键字args时(尤其是当值是列表时),它也会记录redactError
我的代码:
logger = structlog.get_logger()
logger.debug("My custom event name", email_addresses=["some.email.address@mail.com"])
日志消息:
{"event":"My custom event name", "email_addresses":["some.email.address@mail.com"], "level":"info", "msg":"\u003cnil\u003e", "redactError":"1 error occurred:\n\t* error redacting item email_addresses: 1 error occurred:\n\t* error redacting item 0: unknown interface interface {} not redacted\n\n\n\n","request":"b8214486-d270-416b-ba3a-cc36b784c19d", "stream":"stderr", "thread":140500243846912, "time":"2020-07-22T19:28:50Z","timestamp":"2020-07-22T19:28:50.737388Z"}
我不知道为什么它给了我一个redactError
,而它显然仍然能够在日志消息中添加关键字参数。我还注意到,如果列表长度大于1,它将向redactError
字符串添加更多错误(例如,对于每个索引,“错误编辑项<;>;:未知接口{}未编辑\n”)
我真的很困惑,为什么我会犯这个错误。它并没有干扰我的代码的执行能力,只是把日志弄得乱七八糟。感谢您的帮助
编辑:感谢下面的一些评论。在出现问题时添加我的日志记录配置:
# setting up the logging config
level = getattr(logging, "DEBUG")
formatter = logging.Formatter("%(message)s")
sh = logging.StreamHandler()
sh.setFormatter(formatter)
logger = logging.getLogger()
logger.setLevel(level)
logger.addHandler(sh)
processors = [
structlog.stdlib.filter_by_level,
structlog.stdlib.add_log_level,
structlog.stdlib.add_logger_name,
structlog.processors.format_exc_info,
structlog.processors.TimeStamper(fmt='iso', utc=True),
structlog.processors.StackInfoRenderer(),
add_thread,
structlog.processors.JSONRenderer(),
]
structlog.configure(
processors=processors,
context_class=structlog.threadlocal.wrap_dict(dict),
logger_factory=structlog.stdlib.LoggerFactory(),
wrapper_class=structlog.stdlib.BoundLogger,
cache_logger_on_first_use=True,
)
问题似乎是structlog.processors.JSONRenderer。。。。当我将
structlog.processors.JSONRenderer()
更改为structlog.processors.KeyValueRenderer()
时,redactError不会发生。我不知道为什么JSONRenderer不喜欢列表,但也许其他人知道此错误并非来自
structlog
看起来您有一个structlog处理器或stdlib日志处理程序试图从日志条目中编辑个人标识信息,而且您的电子邮件地址字段是一个列表而不是一个字符串,这似乎让您感到困惑
我们需要有关日志记录和structlog配置的更多信息来说明更多信息
相关问题 更多 >
编程相关推荐