2014-04-20 43 views
3

當我的Django站點產生異常時,Django自動給我發送調試頁面,包括一個非常詳細的棧跟蹤。這對調試非常有用。毫無例外地發送Django調試頁面

但在某些情況下,我希望Django向我發送有用的堆棧跟蹤,即使沒有異常。 (例如,如果用戶正在做一件可疑的事情,或者有一個我正在沉默但我想調查的異常。)我想要一行代碼,我可以將它放在我的Django邏輯中的任何位置,這會導致Django以通常格式向我發送堆棧跟蹤。

我該怎麼做?

回答

0

Django有一個可定製的日誌系統,您可以創建自己的日誌記錄器配置。在這種情況下,您可以使用配置爲使用mail_admins處理程序的記錄器。我會告訴你所有的細節docs

要包括你會使用logger.exception(堆棧跟蹤),這裏有一個例子:

views.py

import logging 

logger = logging.getLogger(__name__) 

def trigger_500(request): 
    try: 
     10/0 
    except Exception, exc: 
     logging.exception(exc) 

settings.py

'loggers': { 
    'an_app.views': { 
     'handlers': ['mail_admins', 'console'], 
     'propagate': True, 
    } 
} 
+0

我已經知道關於這一點,但挑戰是在發送給管理員的電子郵件中包含Django的調試頁面和堆棧跟蹤。 –

+0

Ram,我已經更新了我的答案,包括一個提供堆棧跟蹤的例子。我已經在控制檯中對它進行了測試,並顯示了回溯。我會假設它會在電子郵件中具有相同的內容。 – laidibug

+0

謝謝!這很有幫助。儘管我也希望能夠發送堆棧跟蹤,即使沒有異常。你知道怎麼做嗎? –

相關問題