0

djangoが指定するようなサーバーエラーで電子メールを送信するWebアプリケーションがあります。ただし、メールをより適切に管理できるように、各メールにハッシュを添付する必要があります。

残念ながら、これらの電子メールの再フォーマットについて説明しているドキュメントの大部分はバージョン 1.3 用です。1.2.7 を使用しており、アップグレードできません。これは、dictConfig()の例が私たちには当てはまらないことを意味しているようです。

私はdjangoにパッチを当てるこの方法を見つけました:

diff --git a/django/django/core/handlers/base.py b/django/django/core/handlers/base.py
index 45f8445..1605549 100644
--- a/django/django/core/handlers/base.py
+++ b/django/django/core/handlers/base.py
@@ -1,4 +1,4 @@
-import sys 
+import sys, md5 

 from django import http
 from django.core import signals
@@ -170,7 +170,11 @@ class BaseHandler(object):
             request_repr = repr(request)
         except:
             request_repr = "Request repr() unavailable"
-        message = "%s\n\n%s" % (self._get_traceback(exc_info), request_repr)
+        tb=self._get_traceback(exc_info)
+        # generate an md5 hash from this as a fingerprint
+        hash=md5.new(tb)
+        fingerprint='fingerprint: %s' % hash.hexdigest()
+        message = "%s\n\n%s\n\n%s" % (tb, fingerprint, request_repr)
         mail_admins(subject, message, fail_silently=True)
         # If Http500 handler is not installed, re-raise last exception
         if resolver.urlconf_module is None:

残念ながら、このパッチは、django をアップグレードするたびに再適用する必要があります。

django 1.2でメールをカスタマイズする最良の方法は何ですか?

4

1 に答える 1

1

電子メールによるトレースバックが必要でない場合、大量のトレースバックを管理するより良い方法はDjango Sentryかもしれません。

于 2012-01-31T04:38:08.360 に答える