Skip to main content

Logging django errors to the clickhouse database with daily rotation.

Project description

django-clickhouse-logger

Logging django errors to the clickhouse database with daily rotation.

https://github.com/Sobolev5/django-clickhouse-logger

How to use it

To install run:

pip install django-clickhouse-logger

Add the clickhouse logger to INSTALLED_APPS:

INSTALLED_APPS = INSTALLED_APPS + ("clickhouse_logger",)

Set clickhouse logger environment variables in a settings.py:

CLICKHOUSE_LOGGER_HOST = 127.0.0.1 
CLICKHOUSE_LOGGER_PORT = 9000
CLICKHOUSE_LOGGER_USER = "default"
CLICKHOUSE_LOGGER_PASSWORD = ""
CLICKHOUSE_LOGGER_TTL_DAY = 1 # Log rotation (in days).
CLICKHOUSE_LOGGER_REQUEST_EXTRA = 'session' # Means request.session. 
# Extra attribute of django.core.handlers.wsgi.WSGIRequest object for logging. 
# You can define own attribute in your custom middleware. 

Run the clickhouse database creation script:

>>> python manage.py shell --command="import clickhouse_logger; clickhouse_logger.proxy.clickhouse.create_clickhouse_tables()"

This script will create the database clickhouse_logger with the table records for django errors store.

Add the clickhouse logger to your logger configuration in a settings.py:

LOGGING = {
    "version": 1,
    "disable_existing_loggers": False,
    "filters": {
        "require_debug_true": {"()": "django.utils.log.RequireDebugTrue",}, 
        "require_debug_false": {"()": "django.utils.log.RequireDebugFalse"}
    },
    "formatters": {
        "console": {"format": "%(asctime)s - %(levelname)s - %(message)s"},
    },
    "handlers": {
        "console": {"level": "INFO", "filters": ["require_debug_true"], "class": "logging.StreamHandler", "formatter": "console"},
        "clickhouse_logger_handler": {"level": "ERROR", "filters": ["require_debug_false"], "class": "clickhouse_logger.handlers.ClickhouseLoggerHandler"},              
    }, 
    "loggers": {
        "django": {"handlers": ["console"], "level": "INFO",},
        "django.request": {"handlers": ["clickhouse_logger_handler"], "level": "ERROR", 'propagate': False},
    },
}

If you want to test just change filter require_debug_false to require_debug_true for clickhouse_logger_handler and raise error in any django view. For visual interface to the clickhouse table clickhouse_logger.records i recommend using Dbeaver.

P.S.

Try my free service for developers Workhours.space. It's time tracker with simple interface, powerful functionality such as automatic payroll calculation, telegram bot timer, easy web2 and web3 auth, and more. Enjoy.

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

django_clickhouse_logger-0.1.3-py3-none-any.whl (6.2 kB view hashes)

Uploaded 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