2010-04-12 77 views
2

我在生產環境中遇到錯誤,但沒有在本地環境中出現錯誤。 有沒有辦法看到可能從生產中拋出的異常? 在tomcat中 - 當servlet返回輸出時,用戶將能夠看到異常GAE如何查看生產異常?

回答

6

您(管理員)可以在管理控制檯的日誌查看器中看到異常(包括完整堆棧跟蹤)。

如果要向用戶顯示異常堆棧跟蹤,可以安裝一個捕獲所有內容並將堆棧跟蹤打印到響應流的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。

+0

對不起,新手問: - 我會怎麼做? 據我瞭解,我可以將一個過濾器映射到一個頁面,但我需要它映射到所有頁面 -過濾器看起來像什麼? – bach 2010-04-12 23:34:38

+0

更新了我的答案。你可以使用「*」url-pattern將一個過濾器映射到所有頁面。 – Thilo 2010-04-13 05:18:34