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

2024-04-20 14:05:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用来自raven.handlers.loggingSentryHandler来跟踪哨兵中任何级别更高的日志。我的日志消息使用.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样式的字符串。

有人知道如何实现正确的哨兵消息分组(聚合),而不必重新设计字符串格式从format()返回到{}占位符吗?


Tags: fromimportformat消息内容logginghandlerssh