2012-04-20 79 views
0

我是cgi和python的新手,所以我犯了不少錯誤。問題是,如果腳本出現問題,我只是在網頁上發生500錯誤。我可以看到導致錯誤的唯一方法是通過ssh執行頁面,但頁面涉及文件上傳,所以我無法測試該部分。在網站上記錄python錯誤?

有沒有一種方法可以將Python錯誤輸出到文件中?

+0

查看服務器上的日誌文件有什麼問題? – sarnold 2012-04-20 21:39:52

回答

2

有幾個選項,使用記錄模塊的指示,你可以尾巴服務器的錯誤日誌,而且您可以用import cgitb; cgitb.enable()

取決於究竟發生錯誤cgitb,錯誤將顯示在不同的地方,所以檢查所有三個,並使用打印語句和異常塊有助於調試您的代碼。

通過文件上傳,我發現我必須在表單標籤中明確聲明enctype="multipart/form-data",或者它通常會安靜地打破。

+0

我還沒有得到任何東西,除了500 – mowwwalker 2012-04-20 21:52:52

+0

那些應該肯定會顯示在服務器錯誤日誌中的一些信息。通常我發現我忘了通過打印「」「Content-type:text/html」「」或者有語法錯誤,如果前者,python可能不會引發任何異常,如果後者,它會顯示日誌類似於'File'/ usr/share/bdot/cgi/call',第15行 status,junk = commands.getstatusoutput('ssh [email protected] pwd ^ SyntaxError:EOL掃描字符串文字' – TaoJoannes 2012-04-20 22:01:38

+1

哇,我被推遲了,Filezilla改變了權限,所以我只好將它們改回來,一旦我做了,我故意破壞了代碼來測試它,並且它能夠工作,所以我會在下次嘗試它,非常感謝! – mowwwalker 2012-04-20 22:06:31

1

是的。 Python有一個日誌模塊,它可以讓你做你想做的事情。 Here你可以閱讀文檔,它很容易理解。

+0

發生錯誤時,仍然沒有將任何內容打印到文件中。從ssh,教程中的消息進入文件,但是當我從瀏覽器中嘗試頁面時,我仍然只是得到500錯誤,文件中沒有任何內容。 – mowwwalker 2012-04-20 21:48:44

+0

嗯,這不是神奇的。您需要使用日誌記錄模塊和您想要查看的消息(可能是對異常的簡要描述,可能是錯誤的完整跟蹤)來記錄錯誤。舉例: '嘗試: execute_function(個體經營)除例外 ,E: logging.error( '我發現了一個錯誤,我的主:\ n \ T |%S',E) ' – Omar 2012-04-20 21:54:45

+0

我設置爲登錄頁面頂部並沒有記錄任何內容。 – mowwwalker 2012-04-20 21:58:17