Sentry - 如何只记录异常,而不是记录器
Sentry - how to log only exceptions, not logger
我想使用 sentry 来记录测试异常。所以我配置了它:
# tests/__init__.py
from raven import Client
from raven.conf import setup_logging
from raven.handlers.logging import SentryHandler
client = Client(dsn='here goes dsn')
handler = SentryHandler(client, level=logging.ERROR)
setup_logging(handler)
当我 运行 我的测试时:
# tests/test_lolz.py
logger = logging.getLogger(__name__)
def test_log():
logger.warning('do not want to see this - warn')
logger.error('do not want to see this - error')
1 / 0 # yolo
我在哨兵仪表板中看到了两者:记录器错误和异常
对于严重的日志记录级别,没有任何显示。
那么,有没有一种方法只记录异常,而不记录常规日志?
Sentry 当前不提供表示 "only capture log events which have an exception attached" 的方式,但您可以为其编写 logging.Filter
。 Python 文档有点稀疏,但这里有一个过滤器示例:
https://docs.python.org/2/howto/logging-cookbook.html#using-filters-to-impart-contextual-information
您基本上想要检测条目中是否存在异常信息,如果是,return True(告诉它捕获条目)。
我想使用 sentry 来记录测试异常。所以我配置了它:
# tests/__init__.py
from raven import Client
from raven.conf import setup_logging
from raven.handlers.logging import SentryHandler
client = Client(dsn='here goes dsn')
handler = SentryHandler(client, level=logging.ERROR)
setup_logging(handler)
当我 运行 我的测试时:
# tests/test_lolz.py
logger = logging.getLogger(__name__)
def test_log():
logger.warning('do not want to see this - warn')
logger.error('do not want to see this - error')
1 / 0 # yolo
我在哨兵仪表板中看到了两者:记录器错误和异常
对于严重的日志记录级别,没有任何显示。
那么,有没有一种方法只记录异常,而不记录常规日志?
Sentry 当前不提供表示 "only capture log events which have an exception attached" 的方式,但您可以为其编写 logging.Filter
。 Python 文档有点稀疏,但这里有一个过滤器示例:
https://docs.python.org/2/howto/logging-cookbook.html#using-filters-to-impart-contextual-information
您基本上想要检测条目中是否存在异常信息,如果是,return True(告诉它捕获条目)。