django "어떻게"시리즈 7: 오류 보고

7179 단어 django
공공 사이트를 운영하고 있을 때 DEBUG 설정을 꺼야 합니다.이것은 당신의 서버를 더욱 빨리 실행할 수 있을 뿐만 아니라, 다른 꿍꿍이속이 있는 사용자가 당신의 오류 페이지에서 당신이 응용한 상세한 설정 정보를 볼 수 있도록 예방할 수도 있다.그러나 debug가false일 때, 당신의 사이트에서 발생하는 오류를 영원히 볼 수 없습니다. 모든 사람들이 당신의 공개된 오류 페이지만 볼 수 있습니다.배치된 사이트의 오류를 추적해야 하기 때문에django는 오류가 발생했을 때 이 오류를 만들어서 보고할 수 있습니다.
우편으로 보고하다.
서버 오류
DEBUG가false로 설정되었을 때, 언제든지 코드가 처리되지 않는 이상을 일으켜 서버 오류(500)를 일으키면,django는ADMINS 설정에 있는 사용자 목록에 메일을 보냅니다.이로써 관리자는 오류에 대한 알림을 즉시 알 수 있습니다. 메일 내용에는 오류에 대한 설명, 완전한python 소환, 오류를 일으킨 HTTP 요청에 대한 상세한 정보가 포함되어 있습니다.
주의해야 할 것은 메일을 성공적으로 보내고 싶다면 메일을 보낼 때 필요한 설정을 설정해야 한다는 것이다django Email
django 기본값은root@loaclhost메일을 보내지만, 일부 메일 공급자가 이 주소의 모든 메일을 거부하기 때문에, SERVER 설정을 고려할 수 있습니다.EMAIL
이 설정을 사용하지 않으려면 ADMINS 설정을 제거하십시오
404 오류
django도 나쁜 체인이 발생할 때 메일(404 오류)을 보내는 것으로 설정할 수 있으며, 404 오류에 관해서는 다음 상황이 성립될 때 메일을 보낼 수 있습니다.
  • DEBUG는 False
  • 로 설정
  • SEND_BROKEN_LINK_EMAILS가 True
  • 로 설정됨
  • CommonMiddleware 중간부품이 설정되어 있음(기본값)
  • 이 조건이 충족되면 코드에 404 오류가 발생하고 이 요청에 인용자가 있을 때 (인용자가 없으면 보내지 않음),django는 설정 파일의 MANAGERS 목록에 있는 사용자에게 메일을 보냅니다.
    너는 IGNORABLE을 조정할 수 있어404_URLS 설정은django에게 404s는 보고하지 않고, 설정은 컴파일된 정규 표현식 대상의 원조이며, 다음은 하나의 예이다.
    import re
    
    IGNORABLE_404_URLS = (
    
        re.compile(r'^/apple-touch-icon.*\.png$'),
    
        re.compile(r'^/favicon\.ico$'),
    
        re.compile(r'^/robots\.txt$'),
    
    )

     
    이 비헤이비어를 비활성화하는 가장 좋은 방법은 SEND 를 설정하는 것입니다.BROKEN_LINK_EMAILS는 가짜
    오류 보고서 필터링
    민감한 정보 필터링
    오류 보고는 debug에 매우 유용하기 때문에 오류 보고는 관련 정보를 많이 기록할 수 있을수록 좋다.그러나 일부 특정 유형의 정보는 너무 민감하기 때문에 거슬러 올라가지 않는 것이 좋다. 예를 들어 사용자의 비밀번호와 신용카드 번호 등이다.따라서django는 함수 장식기를 제공하여 제품 환경에서 오류 보고서에서 그 정보를 필터해야 한다는 것을 제어할 수 있도록 합니다:sensitivevariables () 및 sensitivepost_parameters()
    sensitive_variables(*variables)
    만약 코드의 일부 함수가 로컬 변수를 사용하여 민감한 정보를 저장할 때, 이 장식기로 이 변수의 값이 오류 보고서에 나타나는 것을 예방할 수 있다. 만약 이 장식기에 아무런 인자가 없다면, 모든 변수는 필터될 것이다
    from django.views.decorators.debug import sensitive_variables
    
    #     user,pw cc
    
    @sensitive_variables('user', 'pw', 'cc')
    
    def process_info(user):
    
        pw = user.pass_word
    
        cc = user.credit_card_number
    
        name = user.name
    
        ...
    
    #        
    
    @sensitive_variables()
    
    def my_function():

     
    sensitive_post_parameters(*parameters)
    유사sensitivevariables (), 이 장식기 필터의 대상은 POST 방법의 HTTP 요청의 변수입니다
    from django.views.decorators.debug import sensitive_post_parameters
    
    #    POST    pass_word credit_card_number
    
    @sensitive_post_parameters('pass_word', 'credit_card_number')
    
    def record_user_profile(request):
    
        UserProfile.create(user=request.user,
    
                           password=request.POST['pass_word'],
    
                           credit_card=request.POST['credit_card_number'],
    
                           name=request.POST['name'])
    
        ...
    
    #    
    
    @sensitive_post_parameters()
    
    def my_view(request):
    
        ...

     
    사용자 정의 오류 보고
    sensitive_variables () 및 sensitivepost_patameters () 는 필터된 매개 변수를 표시하는 것일 뿐입니다. 진정한 필터는django의 기본 오류 필터:django입니다.views.debug.SafeExceptionReporterFilter에서 수행했습니다.이 필터는 두 개의 장식기의 알림을 사용하여 대응하는 값을 ****로 바꾸어 필터 효과에 도달합니다.따라서 기본 필터 동작을 사용자 정의하려면 필터 종류를 정의한 다음DEFAULT 에 설정할 수 있습니다EXCEPTION_REPORTER_FILTER 또는 뷰 함수에 필터 클래스 지정
    DEFAULT_EXCEPTION_REPORTER_FILTER = 'path.to.your.CustomExceptionReporterFilter'
    
    #         
    
    def my_view(request):
    
        if request.user.is_authenticated():
    
            request.exception_reporter_filter = CustomExceptionReporterFilter()
    
        ...

    필터 클래스는 SafeExceptionReporterFilter 클래스를 상속해야 하며 다음 방법을 덮어써야 할 수도 있습니다.
    is_active(self, request): DEBUG가False이면 진짜로 돌아갑니다.is 만active가 진실이어야 다른 필터 동작이 활성화됩니다
    get_request_repr(self,request): 요청 대상을 되돌려주는 대표 문자열은 repr(request)으로 얻은 값이지만 POST 매개 변수는 get 를 사용합니다post_patamteters () 방법에서 얻은
    get_post_parameters(self,request): 필터된 POST 매개 변수 사전을 되돌려주고 민감한 정보는 * 번호로 대체합니다
    get_traceback_frame_variables(self,request,tb frame): 필터된 소거 프레임워크의 로컬 변수를 되돌려주는 사전, 민감한 정보는 * 번호로 대체합니다

    좋은 웹페이지 즐겨찾기