summaryrefslogtreecommitdiff
path: root/django/utils/log.py
diff options
context:
space:
mode:
authordjango-bot <ops@djangoproject.com>2022-02-03 20:24:19 +0100
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2022-02-07 20:37:05 +0100
commit9c19aff7c7561e3a82978a272ecdaad40dda5c00 (patch)
treef0506b668a013d0063e5fba3dbf4863b466713ba /django/utils/log.py
parentf68fa8b45dfac545cfc4111d4e52804c86db68d3 (diff)
Refs #33476 -- Reformatted code with Black.
Diffstat (limited to 'django/utils/log.py')
-rw-r--r--django/utils/log.py137
1 files changed, 77 insertions, 60 deletions
diff --git a/django/utils/log.py b/django/utils/log.py
index 5a5decd531..fd0cc1bdc1 100644
--- a/django/utils/log.py
+++ b/django/utils/log.py
@@ -8,7 +8,7 @@ from django.core.mail import get_connection
from django.core.management.color import color_style
from django.utils.module_loading import import_string
-request_logger = logging.getLogger('django.request')
+request_logger = logging.getLogger("django.request")
# Default logging for Django. This sends an email to the site admins on every
# HTTP 500 error. Depending on DEBUG, all other log records are either sent to
@@ -16,51 +16,51 @@ request_logger = logging.getLogger('django.request')
# require_debug_true filter. This configuration is quoted in
# docs/ref/logging.txt; please amend it there if edited here.
DEFAULT_LOGGING = {
- 'version': 1,
- 'disable_existing_loggers': False,
- 'filters': {
- 'require_debug_false': {
- '()': 'django.utils.log.RequireDebugFalse',
+ "version": 1,
+ "disable_existing_loggers": False,
+ "filters": {
+ "require_debug_false": {
+ "()": "django.utils.log.RequireDebugFalse",
},
- 'require_debug_true': {
- '()': 'django.utils.log.RequireDebugTrue',
+ "require_debug_true": {
+ "()": "django.utils.log.RequireDebugTrue",
},
},
- 'formatters': {
- 'django.server': {
- '()': 'django.utils.log.ServerFormatter',
- 'format': '[{server_time}] {message}',
- 'style': '{',
+ "formatters": {
+ "django.server": {
+ "()": "django.utils.log.ServerFormatter",
+ "format": "[{server_time}] {message}",
+ "style": "{",
}
},
- 'handlers': {
- 'console': {
- 'level': 'INFO',
- 'filters': ['require_debug_true'],
- 'class': 'logging.StreamHandler',
+ "handlers": {
+ "console": {
+ "level": "INFO",
+ "filters": ["require_debug_true"],
+ "class": "logging.StreamHandler",
},
- 'django.server': {
- 'level': 'INFO',
- 'class': 'logging.StreamHandler',
- 'formatter': 'django.server',
+ "django.server": {
+ "level": "INFO",
+ "class": "logging.StreamHandler",
+ "formatter": "django.server",
+ },
+ "mail_admins": {
+ "level": "ERROR",
+ "filters": ["require_debug_false"],
+ "class": "django.utils.log.AdminEmailHandler",
},
- 'mail_admins': {
- 'level': 'ERROR',
- 'filters': ['require_debug_false'],
- 'class': 'django.utils.log.AdminEmailHandler'
- }
},
- 'loggers': {
- 'django': {
- 'handlers': ['console', 'mail_admins'],
- 'level': 'INFO',
+ "loggers": {
+ "django": {
+ "handlers": ["console", "mail_admins"],
+ "level": "INFO",
},
- 'django.server': {
- 'handlers': ['django.server'],
- 'level': 'INFO',
- 'propagate': False,
+ "django.server": {
+ "handlers": ["django.server"],
+ "level": "INFO",
+ "propagate": False,
},
- }
+ },
}
@@ -87,22 +87,24 @@ class AdminEmailHandler(logging.Handler):
super().__init__()
self.include_html = include_html
self.email_backend = email_backend
- self.reporter_class = import_string(reporter_class or settings.DEFAULT_EXCEPTION_REPORTER)
+ self.reporter_class = import_string(
+ reporter_class or settings.DEFAULT_EXCEPTION_REPORTER
+ )
def emit(self, record):
try:
request = record.request
- subject = '%s (%s IP): %s' % (
+ subject = "%s (%s IP): %s" % (
record.levelname,
- ('internal' if request.META.get('REMOTE_ADDR') in settings.INTERNAL_IPS
- else 'EXTERNAL'),
- record.getMessage()
+ (
+ "internal"
+ if request.META.get("REMOTE_ADDR") in settings.INTERNAL_IPS
+ else "EXTERNAL"
+ ),
+ record.getMessage(),
)
except Exception:
- subject = '%s: %s' % (
- record.levelname,
- record.getMessage()
- )
+ subject = "%s: %s" % (record.levelname, record.getMessage())
request = None
subject = self.format_subject(subject)
@@ -118,12 +120,17 @@ class AdminEmailHandler(logging.Handler):
exc_info = (None, record.getMessage(), None)
reporter = self.reporter_class(request, is_email=True, *exc_info)
- message = "%s\n\n%s" % (self.format(no_exc_record), reporter.get_traceback_text())
+ message = "%s\n\n%s" % (
+ self.format(no_exc_record),
+ reporter.get_traceback_text(),
+ )
html_message = reporter.get_traceback_html() if self.include_html else None
self.send_mail(subject, message, fail_silently=True, html_message=html_message)
def send_mail(self, subject, message, *args, **kwargs):
- mail.mail_admins(subject, message, *args, connection=self.connection(), **kwargs)
+ mail.mail_admins(
+ subject, message, *args, connection=self.connection(), **kwargs
+ )
def connection(self):
return get_connection(backend=self.email_backend, fail_silently=True)
@@ -132,7 +139,7 @@ class AdminEmailHandler(logging.Handler):
"""
Escape CR and LF characters.
"""
- return subject.replace('\n', '\\n').replace('\r', '\\r')
+ return subject.replace("\n", "\\n").replace("\r", "\\r")
class CallbackFilter(logging.Filter):
@@ -141,6 +148,7 @@ class CallbackFilter(logging.Filter):
takes the record-to-be-logged as its only parameter) to decide whether to
log a record.
"""
+
def __init__(self, callback):
self.callback = callback
@@ -161,7 +169,7 @@ class RequireDebugTrue(logging.Filter):
class ServerFormatter(logging.Formatter):
- default_time_format = '%d/%b/%Y %H:%M:%S'
+ default_time_format = "%d/%b/%Y %H:%M:%S"
def __init__(self, *args, **kwargs):
self.style = color_style()
@@ -169,7 +177,7 @@ class ServerFormatter(logging.Formatter):
def format(self, record):
msg = record.msg
- status_code = getattr(record, 'status_code', None)
+ status_code = getattr(record, "status_code", None)
if status_code:
if 200 <= status_code < 300:
@@ -189,17 +197,25 @@ class ServerFormatter(logging.Formatter):
# Any 5XX, or any other status code
msg = self.style.HTTP_SERVER_ERROR(msg)
- if self.uses_server_time() and not hasattr(record, 'server_time'):
+ if self.uses_server_time() and not hasattr(record, "server_time"):
record.server_time = self.formatTime(record, self.datefmt)
record.msg = msg
return super().format(record)
def uses_server_time(self):
- return self._fmt.find('{server_time}') >= 0
+ return self._fmt.find("{server_time}") >= 0
-def log_response(message, *args, response=None, request=None, logger=request_logger, level=None, exception=None):
+def log_response(
+ message,
+ *args,
+ response=None,
+ request=None,
+ logger=request_logger,
+ level=None,
+ exception=None,
+):
"""
Log errors based on HttpResponse status.
@@ -211,22 +227,23 @@ def log_response(message, *args, response=None, request=None, logger=request_log
# the same response can be received in some cases, e.g., when the
# response is the result of an exception and is logged when the exception
# is caught, to record the exception.
- if getattr(response, '_has_been_logged', False):
+ if getattr(response, "_has_been_logged", False):
return
if level is None:
if response.status_code >= 500:
- level = 'error'
+ level = "error"
elif response.status_code >= 400:
- level = 'warning'
+ level = "warning"
else:
- level = 'info'
+ level = "info"
getattr(logger, level)(
- message, *args,
+ message,
+ *args,
extra={
- 'status_code': response.status_code,
- 'request': request,
+ "status_code": response.status_code,
+ "request": request,
},
exc_info=exception,
)