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 + ("django_clickhouse_logger",)
Set clickhouse logger environment variables in a settings.py:
DJANGO_CLICKHOUSE_LOGGER_HOST = "127.0.0.1"
DJANGO_CLICKHOUSE_LOGGER_PORT = 9000
DJANGO_CLICKHOUSE_LOGGER_USER = "default"
DJANGO_CLICKHOUSE_LOGGER_PASSWORD = ""
DJANGO_CLICKHOUSE_LOGGER_TTL_DAY = 1 # Log rotation (in days).
DJANGO_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 django_clickhouse_logger; django_clickhouse_logger.proxy.clickhouse.create_clickhouse_table()"
This script will create the database django_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"},
"django_clickhouse_logger": {"level": "ERROR", "filters": ["require_debug_false"], "class": "django_clickhouse_logger.handlers.ClickhouseLoggerHandler"},
},
"loggers": {
"django": {"handlers": ["console"], "level": "INFO",},
"django.request": {"handlers": ["django_clickhouse_logger"], "level": "ERROR", 'propagate': False},
},
}
If you want to test just change filter require_debug_false
to require_debug_true
for django_clickhouse_logger
handler and raise error in any django view.
For visual interface to the clickhouse table django_clickhouse_logger.records
i recommend using Dbeaver.
If you want to truncate table django_clickhouse_logger.records
just run:
>>> python manage.py shell --command="import django_clickhouse_logger; django_clickhouse_logger.proxy.clickhouse.truncate_clickhouse_table()"
Try my free time tracker
My free time tracker for developers Workhours.space.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Hashes for django_clickhouse_logger-0.1.8-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0ab8238724298f115c0ef10b8a0b1309abbe0f8cb201eb06b37576cfc66ed129 |
|
MD5 | 1696179a301fed45f91754d9974c464e |
|
BLAKE2b-256 | c80d03e04ee77865b4c71aa40116b7d48fef86c4d52e71a4293d2a55edcd13fd |