【问题标题】:Twisted new logger api print literal curly brackets?扭曲的新记录器 api 打印文字大括号?
【发布时间】:2023-12-04 13:05:02
【问题描述】:

我想打印一个包含“{}”的字符串,我现在正在使用twisted的新记录器api:http://twistedmatrix.com/documents/current/core/howto/logger.html

但是我发现新的api不能像这样打印字符串:

from twisted.logger import Logger, STDLibLogObserver, globalLogPublisher
import logging

log = Logger()
logging.basicConfig(level=logging.DEBUG)

globalLogPublisher.addObserver(STDLibLogObserver())
a_str = "env={}".format({})
log.info(a_str)

【问题讨论】:

  • 请注意,这是我看到调用 globalLogPublisher.addObserver(STDLibLogObserver()) 实际拼写出来的两个地方之一(这两个地方都不在文档中),这对于获得 Logger 至关重要简单地记录等等。此外,似乎不需要导入或配置 stdlib logging 来实际记录到标准输出。

标签: python logging twisted


【解决方案1】:

你可以通过用更多的大括号转义大括号来做到这一点:

a_str = "env={{}}"

请注意,如果您希望 a_str = "env={{}}".format({}) 等于此字符串,则它不会。阅读format 使用的引用/转义规则。

但是,您应该改为记录结构化事件。改用您的设置试试这个:

log.info(format="env={env}", env={})

【讨论】:

    最近更新 更多