Use Python's standard logging library to send messages to Raygun (https://raygun.io/)
- Implements a standard
logging.Handler
. - Automatic Django request logging.
- Like any other handler, it can be filtered and have its level set.
pip install rglogger
import logging
import rglogger
root_logger = logging.getLogger()
raygun_handler = rglogger.Handler('<your_api_key>')
root_logger.addHandler(raygun_handler)
rglogger.Handler
accepts the following arguments:
api_key
: Your Raygun.io API key. Required.raygun_endpoint
: An alternative endpoint. Defaults tohttps://api.raygun.io/entries
.version
: Your app's version. Defaults to''
.transmit_local_variables
: Should we gather and send local variables with the message? Defaults toTrue
.transmit_global_variables
: Should we gather and send global variables with the message? Defaults toTrue
.timeout
: How long to wait on HTTP connections to the API, in seconds. Defaults to30
.machine_name
: A string representing the current host. Defaults tosocket.gethostname()
.tags
: A list of strings with which to tag outgoing messages. Defaults to[]
.
from rglogger import Handler
raygun_handler = Handler('<your_api_key')
rglogger.catch_all(raygun_handler) # Hooks into sys.excepthook for you!
The following example only logs errors and exceptions. Calls to logging.debug() will work, but won't be sent to Raygun.
import logging
from rglogger import Handler
logger = logging.getLogger()
logger.addHandler(Handler('<your_api_key>', level=logging.ERROR))
Want to disable logging to Raygun if a certain condition is met on a per-message basis? Add a filter to your Logger! Here's an example which only logs to Raygun when Django's DEBUG
setting is set to False
:
import logging
from rglogger import Handler
from django.conf import settings
logger = logging.getLogger()
logger.addFilter(lambda logrecord: not settings.DEBUG)
logger.addHandler(Handler('<your_api_key'))
MIT. See LICENSE for more details.
Pull Requests welcome. Please try to adhere to PEP-8, but don't worry about line lengths.