django -禁用静态文件日志记录

dphi5xsq  于 2023-11-20  发布在  Go
关注(0)|答案(2)|浏览(172)

noob问题:
我想在控制台上禁用静态资产的日志记录,我只想看到正常的http请求(而不是静态文件的请求)。
我总是在控制台上得到这个所有的静态文件加载

[24/Sep/2014 22:18:55] "GET / HTTP/1.1" 200 39816
[24/Sep/2014 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] "GET /static...

字符串
有什么办法能让它失效吗?
例如在express(nodejs)中,如果我把日志中间件放在静态中间件之前,它就不会记录静态文件。

clj7thdc

clj7thdc1#

我发现这个问题很老了(4年零8个月)我想为这个任务添加可能的解决方案。由于在控制台上登录静态资产是由日志模块管理的,所以答案是在日志配置中。在python日志中有一个filter的概念,它允许record被loggers链进一步传递,或者简单地通过返回布尔值True或False来抑制。
我遇到过几次这个问题,所以我想在这里提出一个解决方案:
1.在somemodule中编写一个Filter。

from logging import Filter

class SkipStaticFilter(Filter):
    """Logging filter to skip logging of staticfiles"""
    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,请不要隐藏它们)
希望能帮助人们摆脱伐木污染。

bnlyeluc

bnlyeluc2#

不幸的是,runserver命令不像其他管理命令那样支持--verbosity选项。
有关--verbosity选项的更多信息,请访问:https://docs.djangoproject.com/en/1.7/ref/django-admin/#displaying-debug-output
核心开发人员已将此错误标记为“wontfix”:https://code.djangoproject.com/ticket/15132

相关问题