diff options
| author | Flavio Curella <flavio.curella@gmail.com> | 2015-11-06 10:19:41 -0600 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2016-01-11 07:35:17 -0500 |
| commit | 0bc5cd628042bf0a44df60a93085a4f991a84dfb (patch) | |
| tree | 076999e7afc4c14840a44eff6d92b0c0ba215d36 /django/utils/log.py | |
| parent | 3792e291e6aee9cd43a48fac33f19a6ab24920d2 (diff) | |
Fixed #25684 -- Made runserver use logging for request/response output.
Thanks andreif for the contributing to the patch.
Diffstat (limited to 'django/utils/log.py')
| -rw-r--r-- | django/utils/log.py | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/django/utils/log.py b/django/utils/log.py index 6fb487b7fc..fcc7575180 100644 --- a/django/utils/log.py +++ b/django/utils/log.py @@ -9,6 +9,7 @@ from copy import copy from django.conf import settings from django.core import mail from django.core.mail import get_connection +from django.core.management.color import color_style from django.utils.deprecation import RemovedInNextVersionWarning from django.utils.module_loading import import_string from django.views.debug import ExceptionReporter @@ -28,12 +29,23 @@ DEFAULT_LOGGING = { '()': 'django.utils.log.RequireDebugTrue', }, }, + 'formatters': { + 'django.server': { + '()': 'django.utils.log.ServerFormatter', + 'format': '[%(server_time)s] %(message)s', + } + }, 'handlers': { 'console': { 'level': 'INFO', 'filters': ['require_debug_true'], 'class': 'logging.StreamHandler', }, + 'django.server': { + 'level': 'INFO', + 'class': 'logging.StreamHandler', + 'formatter': 'django.server', + }, 'mail_admins': { 'level': 'ERROR', 'filters': ['require_debug_false'], @@ -45,6 +57,11 @@ DEFAULT_LOGGING = { 'handlers': ['console', 'mail_admins'], 'level': 'INFO', }, + 'django.server': { + 'handlers': ['django.server'], + 'level': 'INFO', + 'propagate': False, + }, 'py.warnings': { 'handlers': ['console'], }, @@ -155,3 +172,36 @@ class RequireDebugFalse(logging.Filter): class RequireDebugTrue(logging.Filter): def filter(self, record): return settings.DEBUG + + +class ServerFormatter(logging.Formatter): + def __init__(self, *args, **kwargs): + self.style = color_style() + super(ServerFormatter, self).__init__(*args, **kwargs) + + def format(self, record): + args = record.args + msg = record.msg + + if len(args) == 0: + msg = self.style.HTTP_BAD_REQUEST(msg) + else: + if args[1][0] == '2': + # Put 2XX first, since it should be the common case + msg = self.style.HTTP_SUCCESS(msg) + elif args[1][0] == '1': + msg = self.style.HTTP_INFO(msg) + elif args[1] == '304': + msg = self.style.HTTP_NOT_MODIFIED(msg) + elif args[1][0] == '3': + msg = self.style.HTTP_REDIRECT(msg) + elif args[1] == '404': + msg = self.style.HTTP_NOT_FOUND(msg) + elif args[1][0] == '4': + msg = self.style.HTTP_BAD_REQUEST(msg) + else: + # Any 5XX, or any other response + msg = self.style.HTTP_SERVER_ERROR(msg) + + record.msg = msg + return super(ServerFormatter, self).format(record) |
