synchrolog-django

Django middleware that sends request logs to Synchrolog


License
Apache-2.0
Install
pip install synchrolog-django==0.0.1

Documentation

Synchrolog

Installation

pip install -r git+https://github.com/synchrolog/synchrolog-django.git@master

Usage

Add access token to your application config (/yourproject/settings.py)

Add synchrolog middleware (/yourproject/settings.py)

MIDDLEWARE = [
    # It MUST be the first middleware
    'synchrolog_django.middleware.SynchrologMiddleware',
    ...
]

SYNCHROLOG_API_KEY = os.getenv('SYNCHROLOG_API_KEY')

# Configure logging
LOGGING = {
    'handlers': {
        # add synchrolog logger handler
        'synchrolog': {
            'class': 'synchrolog_django.QueueHandler',
        },
    },
    'loggers': {
        # Add synchrolog handler to root or your own logger
        '': {
            'handlers': ['synchrolog'],
        },
        # Change default behaviour of django loggers, because their call made out side of middlewares that 
        # we can not control. 
        'django.server': {'level': 'CRITICAL'},
        'django.request': {'level': 'CRITICAL'},
    }

Logger handlers

  • synchrolog_django.RequestHandler - handler that sends messages to Synchrolog server and waits when the message will be delivered.
  • synchrolog_django.QueueHandler - handler that uses queue and RequestHandler for sending logs in an asynchronous way (without blocking request).

Note

Such as Django doesn't raise errors, it's not possible to retrieve stacktrace of all 4xx errors, but library still catches the unhandled exception and their stacktrace.

For running tests

python3 -m venv .env
source .env/bin/activate
pip install -r requirements.txt
python -m unittest tests/test_handler.py tests/test_logging.py