You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django配置SQL日志仅打印public schema查询无业务SQL问题求助

解决方案

你的问题核心是两处日志配置覆盖不全,直接调整loggers配置段即可解决:

原因说明

  1. 业务租户schema的SQL未输出:django-tenant组件对租户的数据库连接做了独立封装,租户场景下产生的SQL查询对应的日志器名称不是Django默认的django.db.backends,而是django_tenants.db.backends,你原来的配置没有覆盖这个日志器。
  2. 自动重载日志冗余:django.utils.autoreload默认在DEBUG模式下会输出所有文件变动的DEBUG日志,只需要把这个日志器的级别调高即可屏蔽无用输出。

修改后的完整配置

logging.config.dictConfig({
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'verbose': {
            'format': '%(asctime)s %(name)-12s %(lineno)d  %(module)s %(levelname)-8s %(message)s'
        },
        'simple': {
            'format': '%(levelname)s %(message)s'
        },

    },
    'filters': {
        'require_debug_false': {
            '()': 'django.utils.log.RequireDebugFalse'
        }
    },
    'handlers': {
        'console': {
            'level': 'DEBUG',
            'class': 'logging.StreamHandler',
            'formatter': 'simple'
        },
        'file': {
            'level': 'DEBUG',
            'class': 'logging.handlers.RotatingFileHandler',
            'maxBytes': 15728640,  # 100MB
            'backupCount': 10,
            'formatter': 'verbose',
            'filename': 'log_files/acme-slcms.log',
            'encoding': 'utf-8',
        },
        'mail_admins': {
            'level': 'CRITICAL',
            'filters': ['require_debug_false'],
            'class': 'django.utils.log.AdminEmailHandler'
        },
    },
    'loggers': {
        'django': {
            'propagate': True,
            'level': 'DEBUG',
            'handlers': ['file'],
        },
        'django.db.backends': {
            'propagate': False,
            'level': 'DEBUG',
            'handlers': ['file'],
        },
        # 新增:适配django-tenant租户schema的SQL日志输出
        'django_tenants.db.backends': {
            'propagate': False,
            'level': 'DEBUG',
            'handlers': ['file'],
        },
        # 新增:屏蔽autoreload的DEBUG级无用日志
        'django.utils.autoreload': {
            'propagate': False,
            'level': 'INFO',
            'handlers': ['file'],
        }
    }
})

补充说明

如果你使用的是旧版的django-tenant-schemas包而非django-tenants,把新增的租户SQL日志器名称替换为django_tenant_schemas.db.backends即可正常生效。

内容的提问来源于stack exchange,提问作者kallada

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 07:06:03