Skip to main content

Use Python's standard logging library to send messages to Raygun (https://raygun.io/)

Project description

# raygun-logger
Use Python's standard logging library to send messages to Raygun (https://raygun.io/)

# Features
- Implements a standard `logging.Handler`.
- Automatic Django request logging.
- Like any other handler, it can be filtered and have its level set.

# Install
pip install rglogger

# Usage
```python
import logging
import rglogger

root_logger = logging.getLogger()
raygun_handler = rglogger.Handler('<your_api_key>')
root_logger.addHandler(raygun_handler)
```

# Options
`rglogger.Handler` accepts the following arguments:

- `api_key`: Your Raygun.io API key. Required.
- `raygun_endpoint`: An alternative endpoint. Defaults to `https://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 to `True`.
- `transmit_global_variables`: Should we gather and send global variables with the message? Defaults to `True`.
- `timeout`: How long to wait on HTTP connections to the API, in seconds. Defaults to `30`.
- `machine_name`: A string representing the current host. Defaults to `socket.gethostname()`.
- `tags`: A list of strings with which to tag outgoing messages. Defaults to `[]`.

# Customization Examples

## Log all uncaught exceptions.
```python
from rglogger import Handler

raygun_handler = Handler('<your_api_key')
rglogger.catch_all(raygun_handler) # Hooks into sys.excepthook for you!
```

## Log messages above a certain level.
The following example only logs errors and exceptions. Calls to logging.debug() will work, but won't be sent to Raygun.
```python
import logging
from rglogger import Handler

logger = logging.getLogger()
logger.addHandler(Handler('<your_api_key>', level=logging.ERROR))
```

## Conditionally disable Raygun messages.
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`:

```python
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'))
```

# License
MIT. See LICENSE for more details.

# Contributions
Pull Requests welcome. Please try to adhere to PEP-8, but don't worry about line lengths.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rglogger-1.2.1.tar.gz (4.9 kB view hashes)

Uploaded Source

Built Distribution

rglogger-1.2.1-py2.py3-none-any.whl (6.7 kB view hashes)

Uploaded Python 2 Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page