Python 迁移期间的Django日志记录

Python 迁移期间的Django日志记录,python,django,django-migrations,Python,Django,Django Migrations,我在Django中设置了许多复杂的数据迁移,并希望设置日志记录,以查看它们是如何完成和捕获错误的。我可以用常规的python日志记录来实现这一点,但Django有这种半内置的功能,我希望Django日志记录可以用于迁移。但是,以下设置似乎不起作用。我哪里出错了,或者Django日志只在服务和测试期间工作 在迁移文件中: import logging logger = logging.getLogger('rdm') stuff logger.warning('message') more stu

我在Django中设置了许多复杂的数据迁移,并希望设置日志记录,以查看它们是如何完成和捕获错误的。我可以用常规的python日志记录来实现这一点,但Django有这种半内置的功能,我希望Django日志记录可以用于迁移。但是,以下设置似乎不起作用。我哪里出错了,或者Django日志只在服务和测试期间工作

在迁移文件中:

import logging
logger = logging.getLogger('rdm')
stuff
logger.warning('message')
more stuff
在Settings.py中:

LOGGING = {
     'version': 1,
     'disable_existing_loggers': False,
     'filters': {
         'require_debug_false': {
             '()': 'django.utils.log.RequireDebugFalse',
         },
         'require_debug_true': {
             '()': 'django.utils.log.RequireDebugTrue',
         },
     },
     'formatters': {
         'simple': {
             'format': '[%(asctime)s] %(levelname)s %(message)s',
             'datefmt': '%Y-%m-%d %H:%M:%S'
         },
     },
     'handlers': {
         'rdm_logfile': {
             'level': 'DEBUG', # should capture everything (warning, info, etc.)
             'filters': ['require_debug_false','require_debug_true'],
             'class': 'logging.handlers.RotatingFileHandler',
             'filename': os.path.join(BASE_DIR,'django_rdm.log'),
             'maxBytes': 1024*1024*100, # 100MB
             'backupCount': 5,
             'formatter': 'simple'
         },
    },
    'loggers': {
         'rdm': {
         'handlers': ['rdm_logfile'],
         },
    }
}

我也有同样的问题。不知何故,我不得不重新配置基本记录器“Django”:

from django.conf import settings
import logging
logger = logging.getLogger(__name__)


def your_migration(apps, schema_editor):

    logger.setLevel(logging.INFO)
    settings.LOGGING['loggers']['django']= {'level':'INFO', 'handlers': ['console']}
    logger.info("Test")
我发现这很有帮助

tl;dr是指您可以配置根记录器以捕获未另行指定的所有内容。这(显然)适用于通过
manage.py运行的所有代码,包括迁移等

根记录器的名称为空,即:

    'loggers': {
         '': {
         'handlers': ['rdm_logfile'],
         },