在sql日志中写入开始/停止事件。

django-sql-log的Python项目详细描述


https://travis-ci.org/novafloss/django-sql-log.svg?branch=master

目标:提供一个插入开始/停止注释的中间件 会登录到SQL日志。

像这样:

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"

可用的中间件只在PostgreSQL数据库中测试过, 但是它应该与其他基于sql的rdbms一起工作。

用法

将此软件包添加到您的需求中,并按常规方式安装。你 不必将应用程序添加到INSTALLED_APPS,不需要 要同步的模型。

添加这样的中间件:

MIDDLEWARE_CLASSES=('django_sql_log.middleware.SQLLoggingMiddleware',# ...)

虽然中间商的顺序并不重要,但最好是 确保中间件接近列表中的第一位。

日志格式字符串

默认情况下,日志格式字符串为:

{full_name}_{phase}

在演示站点中,这将导致:

django_sql_log_demo.views.Index_START

对于日志中的开始事件。

通过将DJANGO_SQL_LOG_FORMAT添加到 你的设置。可用的格式变量是 演示测试):

  • module_namedjango_sql_log_demo.views
  • func_nameIndex
  • full_namedjango_sql_log_demo.views.Index
  • phase:开始或停止,

黑客攻击

如果要运行测试套件,请查看settings_pg.py文件 在您的demo/django_sql_log_demo目录中。

它带有基本的数据库设置,您需要运行毒理测试和 最终存储演示数据。希望通过创建一个 settings_pg_local.py文件,您可以覆盖默认凭据以适应 你的postgresql服务器的细节。

请记住,您必须连接到^ {STR 1 } $的数据库必须存在<强> 在这个服务器上,pg用户应该能够createdelete 数据库。

安装了tox后,只需运行命令tox。这个应该运行 sqlite和postgresql环境的测试(如果准备好的话)。

登录postgresql

有关信息,日志在PostgreSQL设置中默认不激活。 若要确保日志文件将显示开始/停止事件,请转到“编辑” 您的postgresql.conf文件并设置此变量:

log_min_duration_statement = 0

其他数据库系统请参阅官方文件。

这个软件是根据麻省理工学院的许可条款发布的。拜托 有关详细信息,请参阅LICENSE文件。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Hibernate:合并并删除,而不是从数据库中删除实体对象   java如何在WebFilter中有条件地从Mono返回?   java调用mysql c3p0函数   可执行jar Java jar文件加载错误:无法找到或加载主类。类导致的错误:java。lang.ClassNotFoundException:某些东西。班   java如何减少/更改爬网后的延迟?   从其他语言(如Java、PHP、Perl、Python等)调用C/C++代码的最佳方式是什么?   java如何模拟影响对象的void返回方法   当我试图在ubuntu上启动JavaScala时,它抛出了一个异常   java如何正确输出游戏   理解java和C++背景下的JavaScript原型   oracle如何将Java函数转换为postgresql函数   多线程为什么我的java服务器程序在超时后不退出?   java如何使listView中的按钮在单击时工作?   试图将这个嵌套的java forloop转换为python,但我不知道如何转换。有没有一种方法可以像这样为循环执行if语句?   java幂函数在计算器中的应用   如何在java中滚动浏览mysql数据库   在Spring Boot应用程序的JUnit测试中,java没有符合自动连线JPA存储库要求的bean   java如何使用扩展类的JPanel对象?