我已经制作了一个多站点应用程序,可以像这样在中间件中设置django SITE_ID设置:
host = request.get_host()
site = Site.objects.get(domain=host)
settings.SITE_ID = site.id
一切正常,但django调试日志产生的字符串如下:
2014-08-12 16:13:32,484 WARNING base: Not Found: /href
这很好,但我真的需要知道它们来自哪个网站/主机,有什么好办法呢?
我当前的日志记录设置:
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'verbose': {
'format': '%(asctime)s %(levelname)s %(module)s: %(message)s',
},
},
'handlers': {
'file': {
'level': 'DEBUG',
'class': 'logging.FileHandler',
'filename': 'django.debug.log',
'formatter': 'verbose',
},
},
'loggers': {
'django.request': {
'handlers': ['file'],
'level': 'DEBUG',
'propagate': True,
},
},
}
答案 0 :(得分:1)
这样做了:
logging_filters.py:
import logging
from django.conf import settings
class SiteFilter(logging.Filter):
def filter(self, record):
record.site = settings.SITE_ID # set dynamically in middleware.py
return True
settings.py:(project.settings)
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'filters': { # !
'site_filter': {
'()': 'project.logging_filters.SiteFilter',
}
},
'formatters': {
'verbose': { # %(site)s - from filter
'format': '%(asctime)s %(site)s %(levelname)s %(module)s: %(message)s',
},
},
'handlers': {
'file': {
'level': 'DEBUG',
'class': 'logging.FileHandler',
'filename': 'example.com.django.debug.log',
'filters': ['site_filter'], # !
'formatter': 'verbose',
},
},
'loggers': {
'django.request': {
'handlers': ['file'],
'level': 'DEBUG',
'propagate': True,
'filters': ['site_filter'], # !
},
},
}
答案 1 :(得分:0)
在日志文档中使用here所述的logging.Filter
。 Django documentation包含有关配置日志记录的信息,包括过滤器。