Tôi hiện đang đăng nhập tất cả các truy vấn SQL nhờ vào các thiết lập đăng nhập sau:Django lọc log cho SQL chậm truy vấn
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'filters': {
'require_debug_false': {
'()': 'django.utils.log.RequireDebugFalse'
}
},
'formatters': {
'standard': {
'format' : "[%(asctime)s] %(levelname)s [%(name)s:%(lineno)s] %(message)s",
'datefmt' : "%d/%b/%Y %H:%M:%S"
},
},
'handlers': {
'mail_admins': {
'level': 'ERROR',
'filters': ['require_debug_false'],
'class': 'django.utils.log.AdminEmailHandler'
},
'console': {
# logging handler that outputs log messages to terminal
'class': 'logging.StreamHandler',
'level': 'DEBUG', # message level to be written to console
},
'logfile': {
'level':'DEBUG',
'class':'logging.handlers.RotatingFileHandler',
'filename': os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), "log", "logfile"),
'maxBytes': 50000,
'backupCount': 2,
'formatter': 'standard',
},
},
'loggers': {
'django.request': {
'handlers': ['mail_admins'],
'level': 'ERROR',
'propagate': True,
},
'django.db': {
'handlers': ['logfile'],
'level': 'DEBUG',
'propagate': False, # django also has database level logging
},
}
}
Những gì tôi thực sự nhận được trong logfile của tôi là:
[14/Jun/2013 13:54:19] DEBUG [django.db.backends:51] (0.000) SELECT "django_content_type"."id", "django_content_type"."name", "django_content_type"."app_label", "django_content_type"."model" FROM "django_content_type" WHERE "django_content_type"."app_label" = sites ORDER BY "django_content_type"."name" ASC; args=(u'sites',)
Tôi muốn chỉ muốn lọc các truy vấn mất trên 300 mili giây để hoàn tất.
Tôi nên viết phần filters
trong cấu hình đăng nhập của mình như thế nào và lớp học sẽ hoạt động như thế nào?
Điều này rất hữu ích! Sửa đổi duy nhất tôi thực hiện là [đặt bộ lọc trên nhật ký] (https://docs.python.org/2/library/logging.html#filter-objects) ({{'django.db.backends'}} trong trường hợp của tôi) thay vì trên trình xử lý. – tutuDajuju
là có cách nào để xây dựng stacktrace là tốt? vì vậy chúng tôi biết nơi truy vấn đã xảy ra? –