在 Sentry 中分组 '.format()' 风格的日志消息

Grouping '.format()'-style logging messages in Sentry

我使用 raven.handlers.logging 中的 SentryHandler 来跟踪 Sentry 中任何更高级别的日志。我的日志消息动态填充了 .format() 的自定义内容,因此文本消息本身不一定总是具有相同的内容。例如:

import logging
from raven.handlers.logging import SentryHandler
from raven.conf import setup_logging

# Create a "basic" logger
logger = logging.getLogger("root")

# Create a Sentry logger handler
sh = SentryHandler("https://******@sentry.io/******")
sh.setLevel(logging.WARNING)
setup_logging(sh)

# Send the desired message to Sentry via logger
if SomeInteresetingWarning():
    logger.warning("{} missing files in {} directiories!".format(num_files,num_dirs))

很好,只是这会导致每条独特的消息都被视为独特的警告,这当然不是真的。

GitHub 上有一个很好的 QA 解决了这个问题,但那里提供的解决方案仅适用于字符串,格式为 老式 %s-style.

有谁知道如何实现正确的 Sentry 消息分组(聚合)而不必将字符串格式从 format() 重新设计回 %s 占位符?

现在您可以: https://docs.python.org/3/howto/logging-cookbook.html#use-of-alternative-formatting-styles

要点是使用带有 style="{" 的格式化程序。