繁体   English   中英

如何将site_id或主机添加到django调试日志?

[英]how to add site_id or host to django debug log?

我做了一个多站点应用程序,在中间件中设置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,
            },
        },
    }

这样做了:

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'],  # !
            },
        },
    }

使用logging.Filter描述这里的记录文档。 Django文档包含有关配置日志记录的信息,包括过滤器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM