X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=mediagoblin%2Fplugins%2Fraven%2F__init__.py;h=8cfaed0aa8cb24f4698ad2f91b9b4dfee2ab8a5d;hb=058226d0d2d877715b263fd441deb01821f1f59a;hp=d6308d3b64dcd2424f8c6c64187fc1cbc6c67dd2;hpb=3fbba1af82c3eb312ef5f89a7d8974f2faed061c;p=mediagoblin.git diff --git a/mediagoblin/plugins/raven/__init__.py b/mediagoblin/plugins/raven/__init__.py index d6308d3b..8cfaed0a 100644 --- a/mediagoblin/plugins/raven/__init__.py +++ b/mediagoblin/plugins/raven/__init__.py @@ -18,35 +18,75 @@ import os import logging from mediagoblin.tools import pluginapi -from raven import Client -from raven.contrib.celery import register_signal _log = logging.getLogger(__name__) -PLUGIN_DIR = os.path.dirname(__file__) - -def setup_plugin(): - config = pluginapi.get_config('mediagoblin.plugins.oauth') - - _log.info('Setting up raven for celery...') +def get_client(): + from raven import Client + config = pluginapi.get_config('mediagoblin.plugins.raven') sentry_dsn = config.get('sentry_dsn') + client = None + if sentry_dsn: _log.info('Setting up raven from plugin config: {0}'.format( sentry_dsn)) - client = Client(sentry_dsn)) + client = Client(sentry_dsn) elif os.environ.get('SENTRY_DSN'): _log.info('Setting up raven from SENTRY_DSN environment variable: {0}'\ .format(os.environ.get('SENTRY_DSN'))) client = Client() # Implicitly looks for SENTRY_DSN - if client: - register_signal(client) - else: + if not client: _log.error('Could not set up client, missing sentry DSN') + return None + + return client + + +def setup_celery(): + from raven.contrib.celery import register_signal + + client = get_client() + + register_signal(client) + + +def setup_logging(): + config = pluginapi.get_config('mediagoblin.plugins.raven') + + conf_setup_logging = False + if config.get('setup_logging'): + conf_setup_logging = bool(int(config.get('setup_logging'))) + + if not conf_setup_logging: + return + + from raven.handlers.logging import SentryHandler + from raven.conf import setup_logging + + client = get_client() + + _log.info('Setting up raven logging handler') + + setup_logging(SentryHandler(client)) + + +def wrap_wsgi(app): + from raven.middleware import Sentry + + client = get_client() + + _log.info('Attaching raven middleware...') + + return Sentry(app, client) + hooks = { - 'setup': setup_plugin, + 'setup': setup_logging, + 'wrap_wsgi': wrap_wsgi, + 'celery_logging_setup': setup_logging, + 'celery_setup': setup_celery, }