mirror of
https://github.com/Cog-Creators/Red-DiscordBot.git
synced 2025-11-06 03:08:55 -05:00
42 lines
1.2 KiB
Python
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()
|