2
我在生產環境中遇到錯誤,但沒有在本地環境中出現錯誤。 有沒有辦法看到可能從生產中拋出的異常? 在tomcat中 - 當servlet返回輸出時,用戶將能夠看到異常GAE如何查看生產異常?
我在生產環境中遇到錯誤,但沒有在本地環境中出現錯誤。 有沒有辦法看到可能從生產中拋出的異常? 在tomcat中 - 當servlet返回輸出時,用戶將能夠看到異常GAE如何查看生產異常?
您(管理員)可以在管理控制檯的日誌查看器中看到異常(包括完整堆棧跟蹤)。
如果要向用戶顯示異常堆棧跟蹤,可以安裝一個捕獲所有內容並將堆棧跟蹤打印到響應流的Servlet過濾器(然後,您還應該將其記錄爲SEVERE,以便仍然顯示它在日誌中)。
事情是這樣的:
public class ExceptionLogger implements Filter {
@Override
public void init(FilterConfig config) throws ServletException {
}
@Override
public void destroy() {
}
@Override
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
try{
arg2.doFilter(arg0, arg1);
} catch (Exception e) {
Logger.getLogger("ExceptionLogger").log(Level.SEVERE,
"request failed with an exception", e);
e.printStacktrace(arg1.getWriter());
}
}
}
,你可以設置它來過濾在web.xml中的所有頁面以 「*」 一個url-pattern的。
PS:沒有Tomcat,GAE/J正在運行Jetty。
對不起,新手問: - 我會怎麼做? 據我瞭解,我可以將一個過濾器映射到一個頁面,但我需要它映射到所有頁面 -過濾器看起來像什麼? – bach 2010-04-12 23:34:38
更新了我的答案。你可以使用「*」url-pattern將一個過濾器映射到所有頁面。 – Thilo 2010-04-13 05:18:34