從Google App Engine上已部署的應用中的數據存儲中分離對象時,我收到「我無法在我的開發框中重現的」未能分離「異常。分離操作是服務器端的,所以我唯一的信息就是應用程序日誌文件中的異常日誌。但是,堆棧跟蹤會被省略:例如,最深的內部異常以「... 36 more」結尾。如何在Google App Engine的應用程序日誌中顯示異常的完整堆棧跟蹤?
如何調整應用程序日誌記錄的詳細程度以包含完整的非消失堆棧跟蹤?
從Google App Engine上已部署的應用中的數據存儲中分離對象時,我收到「我無法在我的開發框中重現的」未能分離「異常。分離操作是服務器端的,所以我唯一的信息就是應用程序日誌文件中的異常日誌。但是,堆棧跟蹤會被省略:例如,最深的內部異常以「... 36 more」結尾。如何在Google App Engine的應用程序日誌中顯示異常的完整堆棧跟蹤?
如何調整應用程序日誌記錄的詳細程度以包含完整的非消失堆棧跟蹤?
有幾件事情,你都不可能調整:
1)在war\WEB-INF\logging.properties
文件。將.level值更改爲較低的級別,例如DEBUG。
2)在您的Java代碼中,查看封裝try/catch
中的問題代碼,以便您可以控制相同的問題代碼。
3)在catch
塊中,查看通過ex.printStackTrace()
記錄異常數據,其中ex是異常對象。
您可以做的是在記錄異常時添加Throwable作爲參數。即:
Logger log = Logger.getLogger(YourClass.class.getName());
.....
}catch (final Throwable e){
log.log(Level.SEVERE, e.toString(), e);
}
這將在GAE的日誌上打印一個很好的堆棧跟蹤。
這樣您就不必更改全局日誌級別。
更改日誌級別有竅門,謝謝。 – cqcallaw 2012-08-18 16:56:49
@cqcallaw - 改成什麼? Java的默認日誌記錄中沒有DEBUG級別:java.util.logging.Level。 – 2014-04-04 07:54:14
在logging.properties文件中,您會發現一行如「.level = WARNING」。只需將其更改爲「.level = DEBUG」並嘗試。 – Romin 2014-04-04 09:45:45