2018-08-04 15:44:58 +10:00

42 lines
1.2 KiB
Python

import asyncio
import logging
from raven import Client
from raven.handlers.logging import SentryHandler
from raven_aiohttp import AioHttpTransport
from redbot.core import __version__
__all__ = ("SentryManager",)
class SentryManager:
"""Simple class to manage sentry logging for Red."""
def __init__(self, logger: logging.Logger):
self.client = Client(
dsn=(
"https://62402161d4cd4ef18f83b16f3e22a020:9310ef55a502442598203205a84da2bb@"
"sentry.io/253983"
),
release=__version__,
include_paths=["redbot"],
enable_breadcrumbs=False,
transport=AioHttpTransport,
)
self.handler = SentryHandler(self.client)
self.logger = logger
def enable(self):
"""Enable error reporting for Sentry."""
self.logger.addHandler(self.handler)
def disable(self):
"""Disable error reporting for Sentry."""
self.logger.removeHandler(self.handler)
loop = asyncio.get_event_loop()
loop.create_task(self.close())
async def close(self):
"""Wait for the Sentry client to send pending messages and shut down."""
await self.client.remote.get_transport().close()