2013-04-04 108 views
1

在我目前正在使用的應用程序(2.7運行時)中,我試圖確保API級別的異常(即不是我的代碼)在我的應用程序內正確處理。但是,Google/AppEngine似乎在內部處理這些例外情況,並且不會使它們冒泡。例如,使用Thing這是一個預先定義的ndb.ModelAppEngine Python API異常處理

t = Thing(id=1,name='thingy') 
try: 
    t.put() 
except Exception as e: 
    self.log(e) 
    self.abort(500) 

萬一的東西就會出差錯與put()我也沒有辦法趕上/日誌事件 - 或者是那裏?

將數據存儲到blobstore時也會發生類似的情況,在這種情況下,異常顯然會在內部被捕獲並引發,並且沒有機會記錄這些異常。

也許我錯過了一個關鍵點?我瀏覽過API文檔,但是服務引發的異常以及如何捕獲它們似乎並不是文檔團隊的優先考慮事項。

回答

1

實際上App Engine會記錄每一個請求。只需進入應用程序的儀表板,然後點擊日誌

如果你想記錄自己的東西,你應該使用日誌庫,你可以在documentation中閱讀更多關於它的信息。

因此,您應該使用logging.error而不是self.log

+0

self.log是我創建的使用記錄模塊的方法。 – rdodev 2013-04-04 16:33:51

+0

@Syrahn你還可以在你的問題中包含'Thing class'和'self.log'的代碼來調查更多? – Lipis 2013-04-04 19:35:50