我在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'],
},
}
}
答案 0 :(得分:1)
我有同样的问题。我不得不以某种方式重新配置基本记录器“ 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")
答案 1 :(得分:1)
我发现this blog post会有所帮助。
tl; dr是您可以配置root记录器以捕获未指定的所有内容。 (显然)这适用于通过manage.py
运行的所有代码,包括迁移等。
根记录器的名称为空,即:
'loggers': {
'': {
'handlers': ['rdm_logfile'],
},