{"title":"오류 알림","version":"3.2","locale":"ko","docname":"howto/error-reporting","url":"/ko/3.2/howto/error-reporting/","canonical":"https://djangodocs.dev/ko/3.2/howto/error-reporting/","summary":"공용 사이트를 실행할 때는 항상 :설정 기능을 해제해야 합니다.’DEBUG’ 설정입니다. 이렇게 하면 서버가 훨씬 더 빨리 실행될 수 있으며, 악성 사용자가 오류 페이지에서 나타날 수 있는 응용프로그램의 세부 정보를 볼 수 없게 됩니다. 그러나 :설정으로 실행:디버그가 “거짓”으로 설정된 것은…","html":"<h1>오류 알림<a class=\"heading-anchor\" href=\"#error-reporting\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>공용 사이트를 실행할 때는 항상 :설정 기능을 해제해야 합니다.’DEBUG’ 설정입니다. 이렇게 하면 서버가 훨씬 더 빨리 실행될 수 있으며, 악성 사용자가 오류 페이지에서 나타날 수 있는 응용프로그램의 세부 정보를 볼 수 없게 됩니다.</p>\n<p>그러나 :설정으로 실행:디버그가 “거짓”으로 설정된 것은 당신의 사이트에서 발생한 오류를 절대 보지 못한다는 것을 의미하며, 그 대신 모든 사람이 당신의 공개 오류 페이지를 보게 될 것이다. 배포된 사이트에서 발생하는 오류를 추적해야 하므로 Django가 이러한 오류에 대한 세부 정보가 포함된 보고서를 생성하도록 구성할 수 있습니다.</p>\n<section id=\"email-reports\">\n<h2>이메일 보고<a class=\"heading-anchor\" href=\"#email-reports\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<section id=\"server-errors\">\n<h3>서버 오류<a class=\"heading-anchor\" href=\"#server-errors\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>시기:설정:DEBUG는 “False”이며, Django는 다음과 같은 설정에 나열된 사용자에게 e-메일을 보낼 것이다.코드가 처리되지 않은 예외를 발생시키고 내부 서버 오류가 발생할 때마다 ‘ADMIN’을 설정합니다( 엄밀히 말하면 HTTP 상태 코드가 500 이상인 응답의 경우). 이렇게 하면 관리자는 오류를 즉시 알 수 있습니다. :설정:’ADMIN’은 오류에 대한 설명, 완전한 Python 추적, 오류를 발생시킨 HTTP 요청에 대한 세부 정보를 얻을 것이다.</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">참고</p>\n<p>전자 메일을 보내기 위해 Django는 메일 서버에 연결하는 방법을 알려주는 몇 가지 설정이 필요합니다. 최소한 설정:을 지정해야 합니다.’E-MAIL_HOST’ 및 가능한 설정:’EMAIL_HOST_USER’ 및 :설정:메일 서버의 구성에 따라 다른 설정이 필요할 수도 있지만 ‘EMAIL_HOST_PASSWORD’입니다. 이메일 관련 설정의 전체 목록은 :doc:’Django 설정 설명서’를 참조하십시오.</p>\n</aside>\n<p>기본적으로 Django는 root&#64;localhost에서 이메일을 전송합니다. 그러나 일부 메일 공급자는 이 주소의 모든 전자 메일을 거부합니다. 다른 발송인 주소를 사용하려면 :seting:’을 수정하십시오.SERVER_EMail’ 설정입니다.</p>\n<p>이 동작을 활성화하려면 수신자의 전자 메일 주소를 : 설정에 입력하십시오.’ADMIN’ 설정.</p>\n<aside class=\"admonition admonition-seealso\">\n<p class=\"admonition-title\">더 보기</p>\n<p>서버 오류 전자 메일은 로깅 프레임워크를 사용하여 전송되므로 :doc:’로그 구성 사용자 지정’을 통해 이 동작을 사용자 지정할 수 있습니다.</p>\n</aside>\n</section>\n<section id=\"errors\">\n<h3>404 오류<a class=\"heading-anchor\" href=\"#errors\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>끊어진 링크에 대한 전자 메일 오류(404 “페이지 없음” 오류)로 Django를 구성할 수도 있습니다. Django는 다음과 같은 경우 약 404개의 오류를 이메일로 전송합니다.</p>\n<ul class=\"simple\">\n<li><p><a href=\"#id1\"><span class=\"problematic\" id=\"id2\">:설정:`DEBUG`</span></a> 는 “거짓”이다</p></li>\n<li><p>설정:MIDDLEWARE 설정은 <a class=\"reference internal\" href=\"/ko/3.2/ref/middleware/#django.middleware.common.BrokenLinkEmailsMiddleware\" title=\"django.middleware.common.BrokenLinkEmailsMiddleware\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">django.middleware.common.BrokenLinkEmailsMiddleware</span></code></a>.을 포함된다</p></li>\n</ul>\n<p>이러한 조건이 충족되면 Django는 :seting에 나열된 사용자에게 e-메일을 보냅니다.당신의 코드가 404를 올리고 요청에 레퍼러가 있을 때마다 ‘매니저즈’가 설정된다. 참조자가 없는 404대에게는 이메일로 보내는 것이 귀찮지 않습니다. 대개는 고장난 URL이나 고장난 웹 봇을 타이핑하는 사람들이죠. 또한 레퍼러가 요청한 URL과 동일한 경우 404초도 무시합니다. 이 동작도 손상된 웹 봇에서 발생되기 때문입니다.</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">참고</p>\n<p>:class:’~django.middleware.common.’BreakedLink Emails Middleware’는 다음과 같은 404개의 오류를 가로채는 미들웨어 앞에 나타나야 한다.’~django.middleware.maddle.maddle’LocalMiddleware’ 또는 :class:’~django.the’납작한 페이지. 미들웨어플랫 페이지 폴백 미들웨어’. 설정:의 맨 위 설정:미들웨어 설정.</p>\n</aside>\n<p>: setting을 수정하여 Django에게 특정 404s에 대한 보고를 중지하라고 지시할 수 있습니다.IGNORABLE_404_URL의 설정입니다. 컴파일된 정규식 개체의 목록이어야 합니다.</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">import</span><span class=\"w\"> </span><span class=\"nn\">re</span>\n<span class=\"n\">IGNORABLE_404_URLS</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"n\">re</span><span class=\"o\">.</span><span class=\"n\">compile</span><span class=\"p\">(</span><span class=\"sa\">r</span><span class=\"s1\">&#39;\\.(php|cgi)$&#39;</span><span class=\"p\">),</span>\n    <span class=\"n\">re</span><span class=\"o\">.</span><span class=\"n\">compile</span><span class=\"p\">(</span><span class=\"sa\">r</span><span class=\"s1\">&#39;^/phpmyadmin/&#39;</span><span class=\"p\">),</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n<p>: 설정을 수정하여 Django에게 특정 404에 대한 보고를 중지하도록 지시할 수 있습니다.IGNERGABLE_404_URL에 대한 설정. 컴파일된 정규식 개체 목록이어야 합니다. 예:</p>\n<p>다음 예에서는 브라우저 및 크롤러가 자주 요청하는 일부 기존 URL을 제외하는 방법을 보여 줍니다.</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">import</span><span class=\"w\"> </span><span class=\"nn\">re</span>\n<span class=\"n\">IGNORABLE_404_URLS</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"n\">re</span><span class=\"o\">.</span><span class=\"n\">compile</span><span class=\"p\">(</span><span class=\"sa\">r</span><span class=\"s1\">&#39;^/apple-touch-icon.*\\.png$&#39;</span><span class=\"p\">),</span>\n    <span class=\"n\">re</span><span class=\"o\">.</span><span class=\"n\">compile</span><span class=\"p\">(</span><span class=\"sa\">r</span><span class=\"s1\">&#39;^/favicon\\.ico$&#39;</span><span class=\"p\">),</span>\n    <span class=\"n\">re</span><span class=\"o\">.</span><span class=\"n\">compile</span><span class=\"p\">(</span><span class=\"sa\">r</span><span class=\"s1\">&#39;^/robots\\.txt$&#39;</span><span class=\"p\">),</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n<p>(참고로 이것들은 정규 표현식입니다. 그래서 우리는 그것들을 피하기 위해 기간 앞에 역슬래시를 붙였습니다.)</p>\n<p>:class:<a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>django.middleware.common의 동작을 사용자 지정하려면끊어진 링크 이메일 미들웨어의 추가(예: 웹 크롤러에서 오는 요청을 무시하려면)를 하위 분류하고 메소드를 재정의해야 합니다.</p>\n<aside class=\"admonition admonition-seealso\">\n<p class=\"admonition-title\">더 보기</p>\n<p>404개의 오류는 로깅 프레임워크를 사용하여 기록됩니다. 기본적으로 이러한 로그 레코드는 무시되지만, 처리기와 :doc:’로그 구성’을 적절하게 작성하여 오류 보고에 사용할 수 있습니다.</p>\n</aside>\n</section>\n</section>\n<section id=\"filtering-error-reports\">\n<span id=\"id1\"></span><h2>오류 보고서 필터링<a class=\"heading-anchor\" href=\"#filtering-error-reports\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">경고</p>\n<p>중요한 데이터를 필터링하는 것은 어려운 문제이며 중요한 데이터가 오류 보고서에 유출되지 않도록 보장하는 것은 거의 불가능합니다. 따라서 오류 보고서는 신뢰할 수 있는 팀 구성원만 사용할 수 있어야 하며, 전자 메일 등의 인터넷을 통해 암호화되지 않은 오류 보고서를 전송하지 않아야 합니다.</p>\n</aside>\n<section id=\"filtering-sensitive-information\">\n<h3>중요한 정보 필터링<a class=\"heading-anchor\" href=\"#filtering-sensitive-information\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>오류 보고서는 오류를 디버깅하는 데 매우 유용하므로 일반적으로 이러한 오류에 대한 관련 정보를 가능한 많이 기록하는 것이 유용합니다. 예를 들어, 기본적으로 Django는 제기된 예외에 대해 ‘full traceback’_, 각 ‘traceback frame’_의 로컬 변수 및 :class를 기록합니다.’~django.the’HttpRequest’s:ref:’attributes1’입니다.</p>\n<p>그러나 때로는 특정 유형의 정보가 너무 민감하여 사용자의 암호 또는 신용 카드 번호와 같이 추적하기에 적절하지 않을 수 있다. 따라서 :설정의 설명에 따라 중요한 설정을 필터링하는 것 외에도 다음과 같은 작업을 수행할 수 있습니다.’DEBUG’ 설명서인 Django는 실운영 환경에서 오류 보고서(여기서: setting: setting:디버그는 func:’sensitive_variables’와 func:’sensitive_post_parameters’로 설정되어 있다.</p>\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.views.decorators.debug.sensitive_variables\">\n<span class=\"sig-name descname\"><span class=\"pre\">sensitive_variables</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">*</span></span><span class=\"n\"><span class=\"pre\">variables</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.views.decorators.debug.sensitive_variables\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>코드의 함수(보기 또는 일반 콜백)가 중요한 정보를 포함할 수 있는 로컬 변수를 사용하는 경우 “sensitive_variables” decorator를 사용하여 해당 변수 값이 오류 보고서에 포함되지 않도록 방지할 수 있습니다.</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.views.decorators.debug</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">sensitive_variables</span>\n\n<span class=\"nd\">@sensitive_variables</span><span class=\"p\">(</span><span class=\"s1\">&#39;user&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;pw&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;cc&#39;</span><span class=\"p\">)</span>\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">process_info</span><span class=\"p\">(</span><span class=\"n\">user</span><span class=\"p\">):</span>\n    <span class=\"n\">pw</span> <span class=\"o\">=</span> <span class=\"n\">user</span><span class=\"o\">.</span><span class=\"n\">pass_word</span>\n    <span class=\"n\">cc</span> <span class=\"o\">=</span> <span class=\"n\">user</span><span class=\"o\">.</span><span class=\"n\">credit_card_number</span>\n    <span class=\"n\">name</span> <span class=\"o\">=</span> <span class=\"n\">user</span><span class=\"o\">.</span><span class=\"n\">name</span>\n    <span class=\"o\">...</span>\n</code></pre></div>\n<p>위의 예에서 “user”, “pw” 및 “cc” 변수의 값은 오류 보고에 숨겨져 별(’<strong>*********</strong>)로 대체되며 “name” 변수의 값은 공개된다.</p>\n<p>오류 로그에서 함수의 모든 로컬 변수를 체계적으로 숨기려면 “sensitive_variables” decorator에 어떤 인수도 제공하지 마십시오.</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"nd\">@sensitive_variables</span><span class=\"p\">()</span>\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">my_function</span><span class=\"p\">():</span>\n    <span class=\"o\">...</span>\n</code></pre></div>\n<aside class=\"admonition-when-using-multiple-decorators admonition\">\n<p class=\"admonition-title\">여러 개의 장식자를 사용하는 경우</p>\n<p>숨기려는 변수가 함수 인수(예: 다음 예에서는 ‘user’ user’)이고, 장식된 함수에 여러 개의 장식기가 있는 경우, 반드시 “&#64;sensitive_variables”를 장식자 체인의 맨 위에 놓아야 한다. 이렇게 하면 다른 장식자를 통과할 때 함수 인수도 숨겨집니다.</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"nd\">@sensitive_variables</span><span class=\"p\">(</span><span class=\"s1\">&#39;user&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;pw&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;cc&#39;</span><span class=\"p\">)</span>\n<span class=\"nd\">@some_decorator</span>\n<span class=\"nd\">@another_decorator</span>\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">process_info</span><span class=\"p\">(</span><span class=\"n\">user</span><span class=\"p\">):</span>\n    <span class=\"o\">...</span>\n</code></pre></div>\n</aside>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.views.decorators.debug.sensitive_post_parameters\">\n<span class=\"sig-name descname\"><span class=\"pre\">sensitive_post_parameters</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">*</span></span><span class=\"n\"><span class=\"pre\">parameters</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.views.decorators.debug.sensitive_post_parameters\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>만약 당신의 견해를 피력하는을 받는다:수업:~django.http.HttpRequest 개체:항목을 보강:<a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>POSTparameters&lt;django.http.HttpRequest.POST&gt;`민감한 정보를 담아 취약해 당신은 예방할 수 있다.이런 변수들의 오류 보고서도``sensitive_post_parameters”실내 장식가를 사용하여 포함되는에서 값::.</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.views.decorators.debug</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">sensitive_post_parameters</span>\n\n<span class=\"nd\">@sensitive_post_parameters</span><span class=\"p\">(</span><span class=\"s1\">&#39;pass_word&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;credit_card_number&#39;</span><span class=\"p\">)</span>\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">record_user_profile</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">):</span>\n    <span class=\"n\">UserProfile</span><span class=\"o\">.</span><span class=\"n\">create</span><span class=\"p\">(</span>\n        <span class=\"n\">user</span><span class=\"o\">=</span><span class=\"n\">request</span><span class=\"o\">.</span><span class=\"n\">user</span><span class=\"p\">,</span>\n        <span class=\"n\">password</span><span class=\"o\">=</span><span class=\"n\">request</span><span class=\"o\">.</span><span class=\"n\">POST</span><span class=\"p\">[</span><span class=\"s1\">&#39;pass_word&#39;</span><span class=\"p\">],</span>\n        <span class=\"n\">credit_card</span><span class=\"o\">=</span><span class=\"n\">request</span><span class=\"o\">.</span><span class=\"n\">POST</span><span class=\"p\">[</span><span class=\"s1\">&#39;credit_card_number&#39;</span><span class=\"p\">],</span>\n        <span class=\"n\">name</span><span class=\"o\">=</span><span class=\"n\">request</span><span class=\"o\">.</span><span class=\"n\">POST</span><span class=\"p\">[</span><span class=\"s1\">&#39;name&#39;</span><span class=\"p\">],</span>\n    <span class=\"p\">)</span>\n    <span class=\"o\">...</span>\n</code></pre></div>\n<p>위의 예에서 “pass_word”와 “credit_card_number” POST 매개 변수의 값은 오류 보고 내 요청 표현에 숨겨져 별(’<strong>****</strong>’)로 대체되며, “이름” 매개 변수의 값은 공개된다.</p>\n<p>오류 보고서에서 요청의 모든 POST 매개 변수를 체계적으로 숨기려면 <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>sensitive_post_parameters” 장식자에게 어떤 인수도 제공하지 마십시오.</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"nd\">@sensitive_post_parameters</span><span class=\"p\">()</span>\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">my_view</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">):</span>\n    <span class=\"o\">...</span>\n</code></pre></div>\n<p>모든 POST 매개 변수는 특정:mod:’django.contrib에 대한 오류 보고서에서 체계적으로 필터링됩니다.auth.password, <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>password_reset_password”, “password_changes”, “add_view” 및 “user_change_password in <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>auth 관리자”에서 보기 때문에 사용자 암호와 같은 중요한 정보가 유출되는 것을 방지할 수 있다.</p>\n</dd></dl>\n\n</section>\n<section id=\"custom-error-reports\">\n<span id=\"id2\"></span><h3>사용자 정의 오류 리포트<a class=\"heading-anchor\" href=\"#custom-error-reports\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>func:’sensitive_variables’와 :func:’sensitive_post_parameters’ do는 각각 민감한 변수의 이름으로 장식된 함수에 주석을 달고 “HttpRequest” 객체에 민감한 POST 매개 변수의 이름으로 주석을 달기 때문에 오류가 발생할 때 이러한 민감한 정보가 보고서에서 필터링될 수 있다. 실제 필터링은 Django의 기본 오류 리포터 필터 :class:’django에 의해 수행됩니다.경치, 경치,경치SafeExceptionReporterFilter’. 이 필터는 오류 보고가 생성될 때 장식자의 주석을 사용하여 해당 값을 별(’<strong>****</strong>’)로 바꿉니다. 전체 사이트에 대해 이 기본 동작을 재정의하거나 사용자 지정하려면 사용자 고유의 필터 클래스를 정의하고 Django에게 :seting:을 통해 사용하도록 지시해야 합니다.’DEFAULT_EXTECTION_REPORTER_FILTER’ 설정:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"n\">DEFAULT_EXCEPTION_REPORTER_FILTER</span> <span class=\"o\">=</span> <span class=\"s1\">&#39;path.to.your.CustomExceptionReporterFilter&#39;</span>\n</code></pre></div>\n<p>또한 <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>HttpRequest”의 <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>exception_reporter_filter” 속성을 설정하여 어떤 필터를 어떤 뷰에서 사용할지 보다 세밀하게 제어할 수도 있다.</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">my_view</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">):</span>\n    <span class=\"k\">if</span> <span class=\"n\">request</span><span class=\"o\">.</span><span class=\"n\">user</span><span class=\"o\">.</span><span class=\"n\">is_authenticated</span><span class=\"p\">:</span>\n        <span class=\"n\">request</span><span class=\"o\">.</span><span class=\"n\">exception_reporter_filter</span> <span class=\"o\">=</span> <span class=\"n\">CustomExceptionReporterFilter</span><span class=\"p\">()</span>\n    <span class=\"o\">...</span>\n</code></pre></div>\n<p>사용자 지정 필터 클래스는 :class:’django’에서 상속해야 합니다.경치, 경치,경치SafeExceptionReporterFilter’는 다음과 같은 특성 및 방법을 재정의할 수 있습니다.</p>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.views.debug.SafeExceptionReporterFilter\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">SafeExceptionReporterFilter</span></span><a class=\"heading-anchor\" href=\"#django.views.debug.SafeExceptionReporterFilter\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.views.debug.SafeExceptionReporterFilter.cleansed_substitute\">\n<span class=\"sig-name descname\"><span class=\"pre\">cleansed_substitute</span></span><a class=\"heading-anchor\" href=\"#django.views.debug.SafeExceptionReporterFilter.cleansed_substitute\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><aside class=\"version-note version-added\" data-version=\"3.1\">\n<p class=\"version-note-title\">New in Django 3.1</p></aside>\n<p>중요한 값을 대체할 문자열 값입니다. 기본적으로 이것은 민감한 변수의 값을 별(’<strong>******</strong>’)로 바꿉니다.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.views.debug.SafeExceptionReporterFilter.hidden_settings\">\n<span class=\"sig-name descname\"><span class=\"pre\">hidden_settings</span></span><a class=\"heading-anchor\" href=\"#django.views.debug.SafeExceptionReporterFilter.hidden_settings\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><aside class=\"version-note version-added\" data-version=\"3.1\">\n<p class=\"version-note-title\">New in Django 3.1</p></aside>\n<p>설정 및 <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>요청”을 일치시키는 데 사용되는 컴파일된 정규식 개체입니다.META의 가치는 민감한 것으로 간주되고 있습니다. 기본적으로 다음과 같습니다.</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">import</span><span class=\"w\"> </span><span class=\"nn\">re</span>\n\n<span class=\"n\">re</span><span class=\"o\">.</span><span class=\"n\">compile</span><span class=\"p\">(</span><span class=\"sa\">r</span><span class=\"s1\">&#39;API|TOKEN|KEY|SECRET|PASS|SIGNATURE&#39;</span><span class=\"p\">,</span> <span class=\"n\">flags</span><span class=\"o\">=</span><span class=\"n\">re</span><span class=\"o\">.</span><span class=\"n\">IGNORECASE</span><span class=\"p\">)</span>\n</code></pre></div>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.views.debug.SafeExceptionReporterFilter.is_active\">\n<span class=\"sig-name descname\"><span class=\"pre\">is_active</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.views.debug.SafeExceptionReporterFilter.is_active\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>:meth:’get_post_parameters’ 및 :meth:’get_traceback_frame_variables’에서 필터링을 활성화하기 위해 “True”를 반환합니다. 다음과 같은 경우 필터는 기본적으로 활성화됩니다.디버그는 거짓입니다. 민감한 <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>요청”에 주목하십시오.META의 값은 :설정에서 설명한 대로 항상 민감한 설정값과 함께 필터링됩니다.’DEBUG’ 설명서입니다.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.views.debug.SafeExceptionReporterFilter.get_post_parameters\">\n<span class=\"sig-name descname\"><span class=\"pre\">get_post_parameters</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.views.debug.SafeExceptionReporterFilter.get_post_parameters\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>POST 매개 변수의 필터링된 사전을 반환합니다. 중요한 값은 다음과 같이 대체됩니다. attr:’cleaned_substitute’.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.views.debug.SafeExceptionReporterFilter.get_traceback_frame_variables\">\n<span class=\"sig-name descname\"><span class=\"pre\">get_traceback_frame_variables</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">tb_frame</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.views.debug.SafeExceptionReporterFilter.get_traceback_frame_variables\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>지정된 추적 프레임에 대해 필터링된 로컬 변수 사전을 반환합니다. 중요한 값은 다음과 같이 대체됩니다. attr:’cleaned_substitute’.</p>\n</dd></dl>\n\n</dd></dl>\n\n<aside class=\"version-note version-added\" data-version=\"3.1\">\n<p class=\"version-note-title\">New in Django 3.1</p></aside>\n<p>필터링 이외의 오류 보고서를 사용자 정의해야 하는 경우 :setup을 정의하여 사용자 정의 오류 보고자 클래스를 지정할 수 있습니다.’DEF_EXPECTION_REPORT’ 설정은 다음과 같습니다.</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"n\">DEFAULT_EXCEPTION_REPORTER</span> <span class=\"o\">=</span> <span class=\"s1\">&#39;path.to.your.CustomExceptionReporter&#39;</span>\n</code></pre></div>\n<p>예외 리포터는 예외 리포트 데이터를 컴파일하여 텍스트 또는 HTML로 적절하게 포맷할 책임이 있습니다. (예외 리포터는 : setting:예외 리포트 데이터를 준비할 때 ‘DEFAT_REPORTER_FILTER’를 입력하세요.)</p>\n<p>사용자 정의 리포터 클래스는 <a class=\"reference internal\" href=\"#django.views.debug.ExceptionReporter\" title=\"django.views.debug.ExceptionReporter\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">django.views.debug.ExceptionReporter</span></code></a>.에서 상속해야 합니다.</p>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.views.debug.ExceptionReporter\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">ExceptionReporter</span></span><a class=\"heading-anchor\" href=\"#django.views.debug.ExceptionReporter\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.views.debug.ExceptionReporter.html_template_path\">\n<span class=\"sig-name descname\"><span class=\"pre\">html_template_path</span></span><a class=\"heading-anchor\" href=\"#django.views.debug.ExceptionReporter.html_template_path\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><aside class=\"version-note version-added\" data-version=\"3.2\">\n<p class=\"version-note-title\">New in Django 3.2</p></aside>\n<p>Property that returns a <a class=\"reference external\" href=\"https://docs.python.org/3/library/pathlib.html#pathlib.Path\" title=\"(Python v3.14에서)\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">pathlib.Path</span></code></a> representing the absolute\nfilesystem path to a template for rendering the HTML representation of\nthe exception. Defaults to the Django provided template.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.views.debug.ExceptionReporter.text_template_path\">\n<span class=\"sig-name descname\"><span class=\"pre\">text_template_path</span></span><a class=\"heading-anchor\" href=\"#django.views.debug.ExceptionReporter.text_template_path\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><aside class=\"version-note version-added\" data-version=\"3.2\">\n<p class=\"version-note-title\">New in Django 3.2</p></aside>\n<p>Property that returns a <a class=\"reference external\" href=\"https://docs.python.org/3/library/pathlib.html#pathlib.Path\" title=\"(Python v3.14에서)\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">pathlib.Path</span></code></a> representing the absolute\nfilesystem path to a template for rendering the plain-text\nrepresentation of the exception. Defaults to the Django provided\ntemplate.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.views.debug.ExceptionReporter.get_traceback_data\">\n<span class=\"sig-name descname\"><span class=\"pre\">get_traceback_data</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.views.debug.ExceptionReporter.get_traceback_data\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>추적 정보가 들어 있는 사전을 반환합니다.</p>\n<p>예외 보고서를 사용자 지정하기 위한 기본 확장 지점입니다. 예:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.views.debug</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">ExceptionReporter</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">CustomExceptionReporter</span><span class=\"p\">(</span><span class=\"n\">ExceptionReporter</span><span class=\"p\">):</span>\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">get_traceback_data</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">):</span>\n        <span class=\"n\">data</span> <span class=\"o\">=</span> <span class=\"nb\">super</span><span class=\"p\">()</span><span class=\"o\">.</span><span class=\"n\">get_traceback_data</span><span class=\"p\">()</span>\n        <span class=\"c1\"># ... remove/add something here ...</span>\n        <span class=\"k\">return</span> <span class=\"n\">data</span>\n</code></pre></div>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.views.debug.ExceptionReporter.get_traceback_html\">\n<span class=\"sig-name descname\"><span class=\"pre\">get_traceback_html</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.views.debug.ExceptionReporter.get_traceback_html\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>예외 보고서의 HTML 버전을 반환합니다.</p>\n<p>디버그 500 HTTP 오류 페이지의 HTML 버전에 사용됩니다.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.views.debug.ExceptionReporter.get_traceback_text\">\n<span class=\"sig-name descname\"><span class=\"pre\">get_traceback_text</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.views.debug.ExceptionReporter.get_traceback_text\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>예외 보고서의 일반 텍스트 버전을 반환합니다.</p>\n<p>디버그 500 HTTP 오류 페이지 및 전자 메일 보고서의 일반 텍스트 버전에 사용됩니다.</p>\n</dd></dl>\n\n</dd></dl>\n\n<p>필터 클래스와 마찬가지로 “HttpRequest”의 “exception_reporter_class” 속성을 설정하여 지정된 보기 내에서 사용할 예외 리포터 클래스를 제어할 수 있습니다.</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">my_view</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">):</span>\n    <span class=\"k\">if</span> <span class=\"n\">request</span><span class=\"o\">.</span><span class=\"n\">user</span><span class=\"o\">.</span><span class=\"n\">is_authenticated</span><span class=\"p\">:</span>\n        <span class=\"n\">request</span><span class=\"o\">.</span><span class=\"n\">exception_reporter_class</span> <span class=\"o\">=</span> <span class=\"n\">CustomExceptionReporter</span><span class=\"p\">()</span>\n    <span class=\"o\">...</span>\n</code></pre></div>\n<aside class=\"admonition admonition-seealso\">\n<p class=\"admonition-title\">더 보기</p>\n<p>또한 :ref의 사용자 정의 부분을 작성하여 사용자 정의 오류 보고를 설정할 수도 있습니다.’중략 미들웨어’입니다. 사용자 정의 오류 처리를 작성하는 경우 다음과 같은 경우 Django의 기본 오류 처리를 에뮬레이트하는 것이 좋습니다.디버그는 거짓입니다.</p>\n</aside>\n</section>\n</section>","rootId":"error-reporting","toc":[{"title":"이메일 보고","anchor":"email-reports","children":[{"title":"서버 오류","anchor":"server-errors","children":[]},{"title":"404 오류","anchor":"errors","children":[]}]},{"title":"오류 보고서 필터링","anchor":"filtering-error-reports","children":[{"title":"중요한 정보 필터링","anchor":"filtering-sensitive-information","children":[]},{"title":"사용자 정의 오류 리포트","anchor":"custom-error-reports","children":[]}]}],"breadcrumbs":[{"docname":"howto/index","title":"“How-to” 가이드","url":"/ko/3.2/howto/"}],"prev":{"docname":"howto/upgrade-version","title":"Django를 최신 버전으로 업그레이드하고 있습니다.","url":"/ko/3.2/howto/upgrade-version/"},"next":{"docname":"howto/initial-data","title":"모델의 초기 데이터 제공하기.","url":"/ko/3.2/howto/initial-data/"},"formats":{"html":"/ko/3.2/howto/error-reporting/","markdown":"/ko/3.2/howto/error-reporting.md","json":"/ko/3.2/howto/error-reporting.json"},"source":"https://github.com/django/django/blob/stable/3.2.x/docs/howto/error-reporting.txt","official":"https://docs.djangoproject.com/ko/3.2/howto/error-reporting/","inVersions":["6.1","6.0","5.2","5.1","5.0","4.2","4.1","4.0","3.2","3.1","3.0","2.2","2.1","2.0","1.11"],"inLocales":["en","zh-hans","fr","ja","id","it","pt-br","ko","es","el","pl"]}