如何在 Sentry Python SDK 中忽略记录器
How to ignore a logger in the Sentry Python SDK
我正在使用 sentry-python
SDK 从我的 Django 服务器捕获异常。
我不想像上面那样捕获 django.security.DisallowedHost
。
如何删除该记录器的哨兵处理?
我在下面附上了我的服务器配置。
settings.py
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'null': {
'level': 'DEBUG',
'class': 'logging.NullHandler',
},
},
'loggers': {
# Silence SuspiciousOperation.DisallowedHost exception ('Invalid
# HTTP_HOST' header messages). Set the handler to 'null' so we don't
# get those annoying emails.
'django.security.DisallowedHost': {
'handlers': ['null'],
'propagate': False,
},
}
}
sentry_sdk.init(
dsn=os.environ['SENTRY_DSN'],
integrations=[DjangoIntegration()],
send_default_pii=True,
release=f"{os.environ['STAGE']}@{os.environ['VERSION']}",
)
快速回答
参见LoggingIntegration,例如:
from sentry_sdk.integrations.logging import ignore_logger
ignore_logger("a.spammy.logger")
logger = logging.getLogger("a.spammy.logger")
logger.error("hi") # no error sent to sentry
通过某些特征忽略事件的更详细但通用的方法
参见before_breadcrumb and before_send,例如:
import sentry_sdk
def before_breadcrumb(crumb, hint):
if crumb.get('category', None) == 'a.spammy.Logger':
return None
return crumb
def before_send(event, hint):
if event.get('logger', None) == 'a.spammy.Logger':
return None
return event
sentry_sdk.init(before_breadcrumb=before_breadcrumb, before_send=before_send)
在 sentry_sdk 下,我不得不在 before_send 中使用以下代码来让它忽略 django.security.DisallowedHost 异常。
def before_send(event, hint):
"""Don't log django.DisallowedHost errors in Sentry."""
if 'log_record' in hint:
if hint['log_record'].name == 'django.security.DisallowedHost':
return None
return event
我正在使用 sentry-python
SDK 从我的 Django 服务器捕获异常。
我不想像上面那样捕获 django.security.DisallowedHost
。
如何删除该记录器的哨兵处理?
我在下面附上了我的服务器配置。
settings.py
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'null': {
'level': 'DEBUG',
'class': 'logging.NullHandler',
},
},
'loggers': {
# Silence SuspiciousOperation.DisallowedHost exception ('Invalid
# HTTP_HOST' header messages). Set the handler to 'null' so we don't
# get those annoying emails.
'django.security.DisallowedHost': {
'handlers': ['null'],
'propagate': False,
},
}
}
sentry_sdk.init(
dsn=os.environ['SENTRY_DSN'],
integrations=[DjangoIntegration()],
send_default_pii=True,
release=f"{os.environ['STAGE']}@{os.environ['VERSION']}",
)
快速回答
参见LoggingIntegration,例如:
from sentry_sdk.integrations.logging import ignore_logger
ignore_logger("a.spammy.logger")
logger = logging.getLogger("a.spammy.logger")
logger.error("hi") # no error sent to sentry
通过某些特征忽略事件的更详细但通用的方法
参见before_breadcrumb and before_send,例如:
import sentry_sdk
def before_breadcrumb(crumb, hint):
if crumb.get('category', None) == 'a.spammy.Logger':
return None
return crumb
def before_send(event, hint):
if event.get('logger', None) == 'a.spammy.Logger':
return None
return event
sentry_sdk.init(before_breadcrumb=before_breadcrumb, before_send=before_send)
在 sentry_sdk 下,我不得不在 before_send 中使用以下代码来让它忽略 django.security.DisallowedHost 异常。
def before_send(event, hint):
"""Don't log django.DisallowedHost errors in Sentry."""
if 'log_record' in hint:
if hint['log_record'].name == 'django.security.DisallowedHost':
return None
return event