[英]python logging in django
我在django中使用基本的python記錄器,似乎工作得很好。 我在我的setting.py中有日志記錄設置;
logging.baseConfig(level = logging.NOTSET,
format='a format',
datemt=' a datefmt',
filename='path to log',
filemode = 'a')
logging.getLogger('').setLevel(logging.NOTSET)
我的問題是關於傳播例外。 在我的代碼中,如果我有一個try / except子句並捕獲異常,以便可以對其進行日志記錄,那么傳播該錯誤以便重定向到我的500頁的最佳方法是什么。 我一直在用
try:
do stuff
except Exception, e:
logging.error(e)
raise
但是我發現這導致該異常記錄兩次。 還有另一種方法可以執行此操作,還是我做錯了什么?
問候
安德魯
有沒有需要捕獲異常,所以您可以登錄它。 您可以記錄並處理它,或者讓它冒泡到更高的水平,它將記錄並處理它。 如果您想記錄某些視圖中不想處理的異常 ,則可以安裝一些異常中間件 ,該中間件記錄異常並返回您確定的自定義響應,或者返回None
(返回Django響應的任何響應)通常會返回)。
有可擴展的異常中間件的例子在這里 ,它實際上並沒有使用記錄,但其log_exception()
方法,你可以繼承來記錄異常,或只使用該代碼段為指導,以提供自己的異常中間件-它基本上只是一個類使用一個名為process_exception
的方法:
class MyExceptionMiddleware:
def process_exception(self, request, exception):
#Do your logging here
另外,請注意,記錄器具有exception()
方法,該方法的作用類似於error()
但在日志中包含回溯信息。
有一個食譜: http : //code.activestate.com/recipes/466332/
在任何復雜的應用程序中,您可能希望記錄並處理大多數異常。 配方顯示了一種將日志記錄與處理分開的方法,因此不必在每個try-except子句中顯式調用日志記錄機制。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.