我正在尝试配置 Django 应用程序的日志记录,以便 Django 的 ORM 生成的所有 SQL 都记录到 sql.log,并且 Django 记录的所有其他消息都记录到另一个文件。我的 setup.py 日志记录部分如下所示:
'version': 1,
'disable_existing_loggers': False,
'formatters': ...
'handlers': {
'logfile' : {
'class': 'logging.handlers.WatchedFileHandler',
'filename': '.../django.log',
'formatter': 'verbose',
},
'sqlfile': {
'class': 'logging.handlers.WatchedFileHandler',
'filename': '.../sql.log',
'formatter': 'simple',
},
'apache_log': {
'class': 'logging.StreamHandler',
'level': 'ERROR',
'formatter': 'verbose',
}
},
'loggers': {
'django': {
'handlers': ['logfile', 'apache_log'],
'propagate': True,
'level': 'INFO',
},
'django.db': {
'handlers': ['sqlfile'],
'propagate': True,
'level': 'DEBUG',
},
}
SQL 确实被记录到 sql.log,但它也被记录到 django.log,尽管我专门将“django”记录器上的日志级别设置为 INFO。
我错过了什么?
最佳答案
我认为stalk
是对的。事件记录到django.db
传递给附加到 django.db
的处理程序记录器,但也会传递给 django
的处理程序和根记录器除非 propagate
设置为False
对于django.db
记录器。请参阅this diagram了解记录器和处理程序的工作原理。
设置propagate
至False
,事件记录到django.db
只会传递给sqlfile
处理程序。
关于python - 配置 Django 日志记录 - SQL 和其他消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16256155/