Логирование SQL с помощью конфигурации логирования Django. Логгер всегда пытается соединиться с публичной схемой

Ниже приведена конфигурация протоколирования для нашего приложения Django

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.db.backends для печати запросов, генерируемых приложением. Но из вывода видно, что регистратор подключается к public schema

2021-10-06 13:37:39,704 django.db.backends 123  utils DEBUG    (0.089) 
            SELECT c.relname, c.relkind
            FROM pg_catalog.pg_class c
            LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
            WHERE c.relkind IN ('r', 'v', '')
                AND n.nspname = 'public'
                AND pg_catalog.pg_table_is_visible(c.oid); args=None

После внедрения журнала мы не видим никаких запросов, кроме этого.

На самом деле приложение использует другую схему для хранения и получения данных и использует django-tenant как часть домашнего фреймворка.

Примечание

Мы видим, что строка 2021-10-06 09:39:58,096 django.utils.autoreload 368 autoreload DEBUG печатается непрерывно.

Eg: 2021-10-06 09:39:58,096 django.utils.autoreload 368 autoreload DEBUG File /home/foo/Desktop/bar/my_env/lib/python3.8/site-packages/fido2/attestation/android.py first seen with mtime 1612337859.0

Вернуться на верх