Как включить ведение журнала для развернутого приложения Django, работающего в GAE (Google App Engine)? - PullRequest
1 голос
/ 26 мая 2020

При использовании DEBUG = False для settings.py Django не будет выводить никаких ошибок, даже если возникают серьезные (Http status 500) ошибки.

Я попытался добавить запись LOGGING для своих настроек .py, но похоже, что при развертывании в GAE сервер мгновенно выходит из строя при каждом запросе.

Как включить ведение журнала ошибок (с отслеживанием) для развернутого приложения django, работающего в GAE?

1 Ответ

1 голос
/ 27 мая 2020

Вы можете создать свое собственное так называемое « промежуточное ПО », которое представляет собой систему в Django для подключения к обработке запросов / ответов.

Определив « process_exception", вы можете поймать любое исключение, которое вызывает представление, и делать с ним все, что захотите.

Вот пример ( /middleware.py):

import sys
import traceback

class HandleExceptionsMiddleware:
    def __init__(self, get_response):
        self.get_response = get_response

    def __call__(self, request):
        response = self.get_response(request)

        return response

    def process_exception(self, request, exception):
        print("Internal Server Error: " + request.get_full_path(), file=sys.stderr)
        print(traceback.format_exc(), file=sys.stderr)

Затем в settings.py вы можете добавить свое промежуточное ПО:

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    ...
    '<YOUR-APP>.middleware.HandleExceptionsMiddleware',
]

В этом случае мы просто пишем в stderr, который будет сделать его видимым в GAE.

...