標籤:style blog http java color 使用
web程式調試起來和傳統型程式有著很大的差別,對於Django程式來說調試更是個問題。我們可以用postman發送http請求,下面就介紹幾種調試方法:
1、在Eclipse+Pydev中調試Django
適用於測試環境。
可進行單步調試,查看變數值,當出現except時,可以用Python標準模組traceback的print_exc()函數查看函數調用鏈,是最強大的調試利器。
可參考http://my.oschina.net/chihz/blog/180573#OSC_h2_3
2、使用Django的error page
適用於測試環境。
Django的error page功能很強大,能提供詳細的traceback,包括局部變數的值,以及一個純文字的異常資訊。擁有同phpinfo()一樣的作用,
可以展示當前應用的相關設定,包括請求中的 GET, POST and COOKIE 資料以及HTTP環境中的所有重要META fields。
可以通過
assert False
assert False, request.GET
來觸發Django的錯誤頁面,進而進行調試工作
3、django-debug-toolbar
不確定是否用於生產環境。聽說功能非常強大,我沒用過。
4、輸出log到程式開發伺服器終端中
適用於生產環境。
藉助python的logging模組
在setting.py中添加如下配置
import logging
logging.basicConfig(
level = logging.DEBUG,
format =‘%(asctime)s %(levelname)s %(message)s‘,
)
在需要輸出log資訊的地方可以這樣調用
import logging
logging.debug("A log message")
這樣一來就能在程式開發伺服器的終端中看到想要輸出的log,如果想將log資訊記錄到指定檔案中去,調整logging的basicConfig即可,如下所示:
logging.basicConfig(
level = logging.DEBUG,
format =‘%(asctime)s %(levelname)s %(message)s‘,
filename =‘/tmp/myapp.log‘,
filemode =‘w‘
)
有時我們發現我們的程式大部分情況下運行正常,只在特定環境中出現錯誤,此時可以使用traceback module 記錄當前棧存資訊 ,方便調試。具體調用方法如下所示:
import logging, traceback, pprint
def my_buggy_function(arg):
...
if error_condition:
stack = pprint.pformat(traceback.extract_stack())
logging.debug(‘An error occurred: %s‘% stack)
logging模組是安全執行緒的,但不能用於多進程。在多進程的環境下,需要做成B/S結構的,可參考http://www.blogjava.net/qileilove/archive/2014/01/08/408669.html