【问题标题】:django - disable staticfiles loggingdjango - 禁用静态文件日志记录
【发布时间】:2014-09-24 20:25:13
【问题描述】:

菜鸟问题:

我想在控制台上禁用对静态资产的日志记录,我只想看到正常的 http 请求(而不是静态文件的请求)。

我总是在控制台上得到这个来加载所有静态文件

[2014 年 9 月 24 日 22:18:55]“GET / HTTP/1.1”200 39816 [2014 年 9 月 24 日 22:18:55]“GET /static/2.5.11/socialschools/css/molengo/molengo-regular-webfont.css HTTP/1.1”200 509 [24/Sep/2014 22:18:55]“GET /static/2.5.11/socialschools/js/less.1.7.0.min.js HTTP/1.1”200 101854 [24/Sep/2014 22:18:55]“GET /static/2.5.11/socialschools/js/html5shiv.3.7.0.js HTTP/1.1”200 2428 [24/Sep/2014 22:18:55]“GET /static/2.5.11/socialschools/js/jquery.1.9.1.min.js HTTP/1.1”200 92629 [24/Sep/2014 22:18:55]“GET /static/2.5.11/socialschools/js/respond.1.4.2.min.js HTTP/1.1”200 4377 [24/Sep/2014 22:18:55]“获取/静态...

有什么办法可以禁用它?

例如在 express (nodejs) 中,如果我将日志中间件放在静态中间件之前,它不会记录静态文件。任何帮助表示赞赏,谢谢!

【问题讨论】:

    标签: django static


    【解决方案1】:

    我看到这个问题已经很老了(4 年零 8 个月)我想为该任务添加可能的解决方案。由于控制台上的静态资产日志记录由日志记录模块管理,因此答案在于日志记录配置。 在 python 日志记录中有一个filter 的概念,它允许record 被记录器链进一步填充,或者简单地通过返回布尔值 True 或 False 来抑制。

    我遇到过几次这个问题,所以我想在这里提出一个解决方案:

    1. 让我们在somemodule 中编写一个过滤器。
    from logging import Filter
    
    class SkipStaticFilter(Filter):
        """ Logging filter to skip logging of staticfiles to terminal """
        def filter(self, record):
            return not record.getMessage().startswith('GET /static/')
    
    

    编辑:对于 Django 2.2:将 GET /static/ 替换为 HTTP GET /static/

    1. 现在让我们将此过滤器添加到设置中:
    
    LOGGING = {
        # Definition of filters
        'filters': {    
            'hide_staticfiles': {    
                '()': 'somemodule.SkipStaticFilter'    
            }
        },
        'version': 1,    
        'disable_existing_loggers': False,    
        'handlers': {    
            'console': {    
                'class': 'logging.StreamHandler',
    
                # Usage of that filter
                'filters': ['hide_staticfiles']    
            },    
        },    
        'loggers': {    
            'django': {
                # Usage of the handler with our filter  
                'handlers': ['console'],   
            }    
        },    
    
    }   
    
    

    现在您将看不到任何以"GET /static/ 开头的日志记录 您可以添加更多工作人员,使用复杂的规则来决定是否要查看该记录(例如,如果静态请求是 404,请不要隐藏它们)

    希望这能帮助人们摆脱伐木污染。

    【讨论】:

      【解决方案2】:

      很遗憾,runserver 命令不像其他管理命令那样尊重--verbosity 选项。

      有关--verbosity 选项的更多信息,请查看:https://docs.djangoproject.com/en/1.7/ref/django-admin/#displaying-debug-output

      核心开发者已将该漏洞标记为“wontfix”:https://code.djangoproject.com/ticket/15132

      【讨论】:

      • 不应该通过日志配置和特殊过滤器来解决这样的问题吗?
      • 如果你能成功,我相信社区会非常感激。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-27
      • 1970-01-01
      • 2015-12-29
      • 2018-07-17
      • 2011-06-22
      • 2015-04-21
      • 2015-02-01
      相关资源
      最近更新 更多