logging: Use django.server to filter 200 and 304.

Previously, we were monkey patching the runserver command
in zerver/management/commands/rundjango.py for this.
This commit is contained in:
Umair Khan
2017-01-18 16:52:01 +05:00
committed by Tim Abbott
parent 85fbdd6b2d
commit ef0d2a4bb5
4 changed files with 20 additions and 17 deletions

View File

@@ -149,7 +149,7 @@ pid_file.close()
# Pass --nostatic because we configure static serving ourselves in
# zulip/urls.py.
cmds = [['./tools/compile-handlebars-templates', 'forever'],
['./manage.py', 'rundjango'] +
['./manage.py', 'runserver'] +
manage_args + ['127.0.0.1:%d' % (django_port,)],
['env', 'PYTHONUNBUFFERED=1', './manage.py', 'runtornado'] +
manage_args + ['127.0.0.1:%d' % (tornado_port,)],

View File

@@ -61,3 +61,13 @@ class RequireReallyDeployed(logging.Filter):
# type: (logging.LogRecord) -> bool
from django.conf import settings
return settings.PRODUCTION
def skip_200_and_304(record):
# type: (logging.LogRecord) -> bool
# Apparently, `status_code` is added by Django and is not an actual
# attribute of LogRecord; as a result, mypy throws an error if we
# access the `status_code` attribute directly.
if getattr(record, 'status_code') in [200, 304]:
return False
return True

View File

@@ -1,16 +0,0 @@
# Wrapper around Django's runserver to allow filtering logs.
from typing import Any
from django.core.servers.basehttp import WSGIRequestHandler
orig_log_message = WSGIRequestHandler.log_message
def log_message_monkey(self, format, *args):
# type: (Any, str, *Any) -> None
# Filter output for 200 or 304 responses.
if args[1] == '200' or args[1] == '304':
return
orig_log_message(self, format, *args)
WSGIRequestHandler.log_message = log_message_monkey
from django.core.management.commands.runserver import Command

View File

@@ -18,6 +18,7 @@ import sys
import six.moves.configparser
from zerver.lib.db import TimeTrackingConnection
import zerver.lib.logging_util
import six
########################################################################
@@ -969,6 +970,10 @@ LOGGING = {
'require_really_deployed': {
'()': 'zerver.lib.logging_util.RequireReallyDeployed',
},
'skip_200_and_304': {
'()': 'django.utils.log.CallbackFilter',
'callback': zerver.lib.logging_util.skip_200_and_304,
},
},
'handlers': {
'zulip_admins': {
@@ -1032,6 +1037,10 @@ LOGGING = {
'handlers': ['file'],
'propagate': False,
},
'django.server': {
'propagate': False,
'filters': ['skip_200_and_304'],
},
## Uncomment the following to get all database queries logged to the console
# 'django.db': {
# 'handlers': ['console'],