在 Sentry 中对“.format()”样式的日志消息进行分组

Mar*_*erc 6 python format logging sentry

我使用SentryHandlerfromraven.handlers.logging来跟踪 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))
Run Code Online (Sandbox Code Playgroud)

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

GitHub 上有一个很好的QA涵盖了这个问题,但那里提供的解决方案仅适用于使用老式风格 格式化的字符串%s

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

小智 1

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

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