log4j 輸出 stack trace

程式 debug 的時候,還是 stack trace 的 output 最有用了~~

昨天在 debug 一支 jsp 的程式,弄了很久,發現錯誤是 java 的 NullPointerException 但是又因為那個程式的 System.out.println() 沒辦法顯示在伺服器的畫面上,搞了半天,還是找不到是程式的哪一行出錯,要是可以印出 stack trace 就可以馬上知道是程式的哪一行錯誤了…

今天找了一下相關的資料,發現可以配合 log4j 來輸出 stack trace,用:

try {
    .....
} catch(Exception ex) {
    logger.debug("Exception", ex)
}

再設定好 log4j.properties 檔案,輸出資料到另一個文字 log 檔中,就可以方便的進行 debug。

另外,也可以另外寫一個 ExceptionUtil 來把 stack trace 的輸出轉成一個文字字串,方便進行處理。

public class ExceptionUtil {
    public static String getStackTrace(Throwable t) {
        StringWriter sw = new StringWriter();
        PrintWriter pw = new PrintWriter(sw);
        t.printStackTrace(pw);
        pw.flush();
        return sw.toString();
    }
}

參考的資料:
Logging stack trace in log4j
Short introduction to log4j

廣告

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s

%d 位部落客按了讚: