gpt4 book ai didi

django - django 在哪里呈现默认的 500 回溯,以便我可以使用它来创建自己的日志?

转载 作者:行者123 更新时间:2023-12-04 02:10:16 26 4
gpt4 key购买 nike

我想用它在我的自定义中间件类的 process_exception() 方法中生成 html 日志文件,例如:

  • 捕捉到异常。
  • process_exception(request) 调用。
  • process_exception 调用返回默认错误 html 的任何函数。
  • process_exception 将返回的 html 写入 django 服务器运行的某个位置的日志文件夹。

  • 我知道 Django 能够为这些异常发送电子邮件,但我不想使用它。我正在使用 JSON 开发一个 RESTful 应用程序,因此返回一个说明错误 500 的 json 字符串然后将 html 放在其他地方感觉更合适。

    提前致谢。

    抱歉,也许我需要澄清一下:我不想创建自己的 500.html,我想使用 django 在 Debug=True 时使用的那个。即生成错误文件并将其放在日志文件夹中。

    感谢 Mark 的帮助 - 这是我为感兴趣的人提供的解决方案:
    import logging
    import os
    import settings
    import sys
    import datetime

    from response import get_json_response
    from django.views.debug import ExceptionReporter

    logging.config.dictConfig(settings.LOGGING)
    LOGGER = logging.getLogger('console_logger')

    class LoggingMiddleware(object):

    def process_exception(self,request,exception):
    exc_type, exc_value, exc_traceback = sys.exc_info()
    er = ExceptionReporter(request, exc_type, exc_value, exc_traceback)
    time = str(datetime.datetime.now())
    file_path = os.path.join(settings.LOG_FOLDER, "{}.html".format(time))
    LOGGER.error("Writing error 500 traceback to %s" % file_path)
    file_handle = open(file_path,'w')
    file_handle.write(er.get_traceback_html())
    file_handle.close()
    return get_json_response(500,"HTTP Error 500: Internal Server Error")

    该代码拦截任何异常,使用 sys 模块和 djangos 默认错误模板生成格式良好的回溯/异常信息页面,然后将其放置在日志文件夹中,然后返回一个 JSON 对象,说明存在 http 错误 500。

    最佳答案

    500 回溯页面使用模板字符串 ( TECHNICAL_500_TEMPLATE ),该字符串被硬编码为 django.views.debug .该报告由 ExceptionReporter 生成。也包含在 django.views.debug 中的类您应该能够将其重新用于您自己的日志生成。

    关于django - django 在哪里呈现默认的 500 回溯,以便我可以使用它来创建自己的日志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12924746/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com