Raven
跳转到导航
跳转到搜索
配置示例
logging
import logging
def setup_sentry_logging(dsn, level=logging.WARN):
from raven.handlers.logging import SentryHandler
from raven.conf import setup_logging
handler = SentryHandler(dsn)
handler.setLevel(level)
setup_logging(handler)
asyncio
使用 raven-aiohttp 库:
def setup_sentry_logging(dsn, level=logging.WARN):
from raven import Client
from raven.handlers.logging import SentryHandler
from raven.conf import setup_logging
from raven_aiohttp import AioHttpTransport
client = Client(dsn, transport=AioHttpTransport)
handler = SentryHandler(client)
handler.setLevel(level)
setup_logging(handler)
return lambda: client.remote.get_transport().close()
def main():
sentry_cleanup = setup_sentry_logging(SENTRY_DSN)
...
try:
loop.run_until_complete(task)
...
finally:
loop.run_until_complete(sentry_cleanup())
loop.close()
from raven.contrib.tornado import AsyncSentryClient
from raven.conf import setup_logging
from raven.handlers.logging import SentryHandler
application.sentry_client = AsyncSentryClient(sentry_url)
handler = SentryHandler(application.sentry_client, level=logging.ERROR)
# don't catch tornado logger; it's handled by SentryMixin
logging.getLogger('my_app').addHandler(handler)
from raven.contrib.tornado import SentryMixin
class BaseHandler(SentryMixin, RequestHandler):
def log_exception(self, typ, value, tb):
# don't log too much (like 40x)
ret = super(SentryMixin, self).log_exception(typ, value, tb)
if isinstance(value, HTTPError):
if value.status_code < 500:
return ret
self.captureException(exc_info=(typ, value, tb))
return ret
...
仅 logging:
def setup_sentry_for_tornado(dsn, level=logging.WARN):
from raven.contrib.tornado import AsyncSentryClient
from raven.conf import setup_logging
from raven.handlers.logging import SentryHandler
sentry_client = AsyncSentryClient(dsn)
handler = SentryHandler(sentry_client, level=level)
setup_logging(handler)
注意
raven 会尝试导入 gevent(即使并不使用),这可能导致问题(如 Salt 与 gevent 1.1.1 不兼容;1.0.1 和 1.1.2 都没问题)。
使用
指定主机名
logger.error('msg', extra = {'server_name': hostname})