Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/peopledoc/django-sql-log
Django SQL Log
https://github.com/peopledoc/django-sql-log
approved-public ghec-mig-migrated
Last synced: about 1 month ago
JSON representation
Django SQL Log
- Host: GitHub
- URL: https://github.com/peopledoc/django-sql-log
- Owner: peopledoc
- License: mit
- Created: 2014-12-08T08:55:27.000Z (about 10 years ago)
- Default Branch: master
- Last Pushed: 2017-11-20T23:02:53.000Z (about 7 years ago)
- Last Synced: 2024-11-16T03:15:16.794Z (2 months ago)
- Topics: approved-public, ghec-mig-migrated
- Language: Python
- Size: 31.3 KB
- Stars: 8
- Watchers: 18
- Forks: 1
- Open Issues: 4
-
Metadata Files:
- Readme: README.rst
- Changelog: Changelog.md
- License: LICENSE
Awesome Lists containing this project
- starred-awesome - django-sql-log - Django SQL Log (Python)
README
Django simple SQL log
=====================.. image:: https://travis-ci.org/peopledoc/django-sql-log.svg?branch=master
:target: https://travis-ci.org/peopledoc/django-sql-logGoal: provide a middleware that inserts start/stop annotations that
would land on the SQL logs.Like this:
::
2014-12-08 09:33:58 CET LOG: duration: 0.174 ms statement: BEGIN
2014-12-08 09:33:58 CET LOG: duration: 0.502 ms statement: SET TIME ZONE 'UTC'
2014-12-08 09:33:58 CET LOG: duration: 0.053 ms statement: COMMIT
2014-12-08 09:33:58 CET LOG: duration: 0.228 ms statement: SHOW default_transaction_isolation
2014-12-08 09:33:58 CET LOG: duration: 0.043 ms statement: BEGIN
2014-12-08 09:33:58 CET LOG: duration: 0.354 ms statement: SELECT 'django_sql_log_demo.views.Index_START'
2014-12-08 09:33:58 CET LOG: duration: 1.221 ms statement: SELECT "dummy_article"."id", "dummy_article"."title", "dummy_article"."body" FROM "dummy_article"
2014-12-08 09:33:58 CET LOG: duration: 0.118 ms statement: SELECT 'django_sql_log_demo.views.Index_STOP'
2014-12-08 09:33:58 CET LOG: duration: 0.067 ms statement: ROLLBACK
2014-12-08 09:33:59 CET LOG: duration: 0.179 ms statement: BEGIN
2014-12-08 09:33:59 CET LOG: duration: 0.513 ms statement: SET TIME ZONE 'UTC'
2014-12-08 09:33:59 CET LOG: duration: 0.054 ms statement: COMMIT
2014-12-08 09:33:59 CET LOG: duration: 0.231 ms statement: SHOW default_transaction_isolation
2014-12-08 09:34:00 CET LOG: duration: 117.999 ms statement: DROP DATABASE "test_hello_world"The available middleware has been tested only with Postgresql databases,
but it should work with other SQL-based RDBMs.Usage
-----Add this package to your requirements, and install it the usual way. You
don't have to add the application to the ``INSTALLED_APPS``, there's no
model to sync.Add the middleware like this:
.. code:: python
MIDDLEWARE_CLASSES = (
'django_sql_log.middleware.SQLLoggingMiddleware',
# ...
)Although the order of the middlewares is not crucial, it is better to
make sure that the middleware is near the first place in the list.Log format string
~~~~~~~~~~~~~~~~~By default, the log format string is:
::
{full_name}_{phase}
In the demo site, this would result in:
::
django_sql_log_demo.views.Index_START
for the START event in the log.
You can customize this format by adding the ``DJANGO_SQL_LOG_FORMAT`` to
your settings. Available format variables are (with correspondance in
the demo tests):- ``module_name``: ``django_sql_log_demo.views``,
- ``func_name``: ``Index``,
- ``full_name``: ``django_sql_log_demo.views.Index``,
- ``phase``: START or STOP,Hacking
-------If you want to run the test-suite, have a look at the ``settings_pg.py`` file
in your ``demo/django_sql_log_demo`` directory.It carries the basic database settings you'll need to run tox tests and
eventually store demo data. Hopefully, by simply creating a
``settings_pg_local.py`` file, you can override the default credentials to fit
your Postgresql server specifics.Please bear in mind that the database you'll have to connect to **must exist**
on this server, and that your PG user should be able to *create* and *delete*
databases.With ``tox`` installed, simply run the command ``tox``. This should run
the tests for Sqlite and postgresql environments, if ready.Logging in Postgresql
~~~~~~~~~~~~~~~~~~~~~For you information, logs are not activated by default in postgresql settings.
To make sure your log file will display the START/STOP events, go edit
your ``postgresql.conf`` file and set this variable::log_min_duration_statement = 0
For other database systems, please refer to the official documentation.
This software is published under the terms of the MIT License. Please
see the ``LICENSE`` file for more information.