2012-11-06 41 views
0

我想調試我用django製作的應用程序,它使用django的manage.py工作正常,但是當我使用nginx時,某些功能不起作用。我檢查了錯誤日誌,它們都是空的,可能是因爲我正在捕獲所有異常並將它們發送到標準輸出。有沒有一種簡單的方法可以用nginx查看應用程序的輸出?用django和nginx記錄標準

+0

你是如何運行的Django? WSGI? – JeffS

+0

您是否在您的django配置中添加了請求錯誤處理程序? – andrefsp

+0

我的配置與此處列出的相同:https://code.djangoproject.com/wiki/DjangoAndNginx –

回答

0

WSGI服務器經常禁用標準輸出,我認爲它可能會導致某種兼容性問題。 Django具有內置日誌功能;我建議使用它而不是打印語句。這都應該是更容易配置,也讓你有更多的特異性日誌記錄,即:

log.debug(「只看到在調試」)

log.warn(」此消息可能表明一個問題')

相關Django文檔: https://docs.djangoproject.com/en/dev/topics/logging/

+0

默認情況下,默認情況下禁用mod_wsgi 2.X及更高版本禁用stdout。這是爲了強制人們編寫可移植的WSGI應用程序。沒有人關心,所以mod_wsgi 3.X允許人們編寫標準輸出,因此編寫非可移植的WSGI應用程序。請參閱http://blog.dscpl.com.au/2009/04/wsgi-and-printing-to-standard-output.html –

+0

@GrahamDumpleton,我們在這裏討論的是nginx,而不是Apache – JeffS

+0

我很清楚那個,但是'WSGI服務器經常禁用標準輸出'的語句只能是對Apache的mod_wsgi的引用,因爲沒有其他的WSGI服務器我知道故意做了一些嘗試並阻止你使用標準輸出。唯一真正的例外是CGI腳本,它使用stdout與服務器通信,這就是mod_wsgi停止使用stdout的原因。也就是說,要確保您編寫的內容仍然可以與當時存在的CGI/WSGI適配器一起使用。 –