gpt4 book ai didi

sql - 用于慢速 SQL 查询的 Django 日志过滤器

转载 作者:行者123 更新时间:2023-12-04 04:06:02 25 4
gpt4 key购买 nike

由于以下 LOGGING 设置,我目前正在记录所有 SQL 查询:

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
},
}
}

我在日志文件中实际得到的是:
[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',)

我只想过滤需要 300 毫秒以上才能完成的查询。

我该怎么写 filters我的日志记录配置的一部分,以及执行过滤的类是什么样的?

最佳答案

到目前为止,我已经尝试使用 CallbackFilter 但我更喜欢有一个日志记录类。

LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'filters': {
'queries_above_300ms': {
'()': 'django.utils.log.CallbackFilter',
'callback': lambda record: record.duration > 0.3 # output slow queries only
},
},
'formatters': {
'standard': {
'format' : "[%(asctime)s] %(levelname)s [%(name)s:%(lineno)s] %(message)s",
'datefmt' : "%d/%b/%Y %H:%M:%S"
},
},
'handlers': {
'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',
'filters': ['queries_above_300ms'],
},
},
'loggers': {
'django.db': {
'handlers': ['logfile'],
'level': 'DEBUG',
'propagate': False,
},
}
}

关于sql - 用于慢速 SQL 查询的 Django 日志过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17108810/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com