mirror of
https://github.com/zulip/zulip.git
synced 2025-11-04 14:03:30 +00:00
AdminZulipHandler: Extract add_request_metadata.
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
from __future__ import absolute_import
|
||||
|
||||
from django.conf import settings
|
||||
from typing import Optional
|
||||
from typing import Any, Dict, Optional
|
||||
|
||||
import logging
|
||||
import traceback
|
||||
@@ -14,35 +14,8 @@ from django.views.debug import ExceptionReporter, get_exception_reporter_filter
|
||||
|
||||
from zerver.lib.queue import queue_json_publish
|
||||
|
||||
class AdminZulipHandler(logging.Handler):
|
||||
"""An exception log handler that sends the exception to the queue to be
|
||||
sent to the Zulip feedback server.
|
||||
"""
|
||||
|
||||
# adapted in part from django/utils/log.py
|
||||
|
||||
def __init__(self):
|
||||
# type: () -> None
|
||||
logging.Handler.__init__(self)
|
||||
|
||||
def emit(self, record):
|
||||
# type: (ExceptionReporter) -> None
|
||||
try:
|
||||
request = record.request # type: HttpRequest
|
||||
|
||||
exception_filter = get_exception_reporter_filter(request)
|
||||
|
||||
if record.exc_info:
|
||||
stack_trace = ''.join(traceback.format_exception(*record.exc_info)) # type: Optional[str]
|
||||
else:
|
||||
stack_trace = None
|
||||
|
||||
report = dict(
|
||||
node = platform.node(),
|
||||
message = record.getMessage(),
|
||||
stack_trace = stack_trace,
|
||||
)
|
||||
|
||||
def add_request_metadata(report, request):
|
||||
# type: (Dict[str, Any], HttpRequest) -> None
|
||||
report['path'] = request.path
|
||||
report['method'] = request.method
|
||||
report['remote_addr'] = request.META.get('REMOTE_ADDR', None),
|
||||
@@ -65,6 +38,7 @@ class AdminZulipHandler(logging.Handler):
|
||||
report['user_email'] = user_email
|
||||
report['user_full_name'] = user_full_name
|
||||
|
||||
exception_filter = get_exception_reporter_filter(request)
|
||||
try:
|
||||
report['data'] = request.GET if request.method == 'GET' else \
|
||||
exception_filter.get_post_parameters(request)
|
||||
@@ -80,6 +54,31 @@ class AdminZulipHandler(logging.Handler):
|
||||
# exception if the host is invalid
|
||||
report['host'] = platform.node()
|
||||
|
||||
class AdminZulipHandler(logging.Handler):
|
||||
"""An exception log handler that sends the exception to the queue to be
|
||||
sent to the Zulip feedback server.
|
||||
"""
|
||||
|
||||
# adapted in part from django/utils/log.py
|
||||
|
||||
def __init__(self):
|
||||
# type: () -> None
|
||||
logging.Handler.__init__(self)
|
||||
|
||||
def emit(self, record):
|
||||
# type: (logging.LogRecord) -> None
|
||||
try:
|
||||
if record.exc_info:
|
||||
stack_trace = ''.join(traceback.format_exception(*record.exc_info)) # type: Optional[str]
|
||||
else:
|
||||
stack_trace = None
|
||||
|
||||
report = dict(
|
||||
node = platform.node(),
|
||||
message = record.getMessage(),
|
||||
stack_trace = stack_trace,
|
||||
)
|
||||
add_request_metadata(report, record.request) # type: ignore # record.request is added dynamically
|
||||
except Exception:
|
||||
traceback.print_exc()
|
||||
report = dict(
|
||||
|
||||
Reference in New Issue
Block a user