【问题标题】:Is it a good idea to log all sql queries in django production?在 django 生产中记录所有 sql 查询是个好主意吗?
【发布时间】:2017-07-12 01:54:51
【问题描述】:

我正在考虑使用中间件记录对我们的 postgresql 数据库进行的所有 sql 查询 Snippet 1 要么 Snippet 2

它会影响应用程序的性能吗? Postgres 普通日志记录对我不起作用,因为除了 sql 查询我还必须存储一些额外的信息。

我尝试使用数据库日志记录所有 sql 查询,但遗憾的是,当设置文件中的 DEBUG=False 时,这似乎不起作用。

【问题讨论】:

  • 我们不知道你的设置,所以我们不知道会发生什么。当然它不会加速应用程序。 ;-)
  • @KrzysztofSzularz 但我想知道,这是个好主意吗?在 django 级别进行数据库日志记录?这是一个好习惯吗?
  • 好的做法是不要将数据库查询存储在生产日志中。它可能导致凭据/敏感信息泄漏。 @KrzysztofSzularz 也是对的。它会减慢应用程序的速度。还会有不必要的日志,您可能会错过这些之间的重要日志
  • @ruddra 我没有告诉它会减慢应用程序的速度。我说它不会加快速度。
  • @ruddra 我也看不出在使用一些理智的日志聚合解决方案时如何错过“中间的日志”。

标签: python django postgresql python-2.7


【解决方案1】:

您可以通过在 setting.py 中定义 Logging 来自定义日志记录 请阅读此文档。

可以在 debug=false 时使用此文档进行日志记录:

logging doc 将此代码添加到setting.py:

LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
    'file': {
        'level': 'DEBUG',
        'class': 'logging.FileHandler',
        'filename': '/path/to/debug.log',
    },

},
'loggers': {
    'django.db.backends': {
        'handlers': ['file'],
        'level': 'DEBUG',
    },
}}

在您在 sn-p2 上面放置的两个链接中说它仅在 debug=true 时才有效 在第 35 行的 sn-p1 中有这样的条件:

if len(connection.queries) > 0 and settings.DEBUG:
    ....

表明它在 debug=true 中有效

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-27
    • 2011-05-14
    • 2011-01-05
    • 1970-01-01
    • 1970-01-01
    • 2020-05-01
    • 1970-01-01
    • 2017-11-12
    相关资源
    最近更新 更多