摘要:我們在編寫一些組件時,使用的日志系統有時并不能打印完整的堆棧信息,比如我們在調用打印異常時,只打印一行異常信息。
Java print full StackTrace
我們在編寫一些組件時,使用的日志系統有時并不能打印完整的堆棧信息,比如slf4j,log4j,我們在調用log.error("found error ...",e)打印異常時,只打印一行異常信息。我們看下slf4j的源碼
/** * Log an exception (throwable) at the ERROR level with an * accompanying message. * * @param msg the message accompanying the exception * @param t the exception (throwable) to log */ public void error(String msg, Throwable t);
它在打印exception時,只是打印了堆棧當中的第一行Throwable的信息, 而我們想要的是把整個堆棧都打印出來,這時我們會用下面方式打印堆棧信息。
e.printStackTrace()
這雖然打印了完整的堆棧信息,但它并不會把堆棧信息定向到日志文件中,這時我們就需要利用利用輸出流把信息重新定到變量中,然后再送入到日志系統中
/** * 完整的堆棧信息 * * @param e Exception * @return Full StackTrace */ public static String getStackTrace(Exception e) { StringWriter sw = null; PrintWriter pw = null; try { sw = new StringWriter(); pw = new PrintWriter(sw); e.printStackTrace(pw); pw.flush(); sw.flush(); } finally { if (sw != null) { try { sw.close(); } catch (IOException e1) { e1.printStackTrace(); } } if (pw != null) { pw.close(); } } return sw.toString(); }
然后我們這樣調用就解決了這個問題
log.error("fount error...", getStackTrace(e))
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/64674.html
摘要:指的是占用了一個核心,兩個核心是,以此類推。占用率及對應進程可以通過命令確定,在界面按顯示完整的命令行參數,按顯示每個核心的統計數據。查看線程堆棧,找到對應的類及行號,然后閱讀代碼查找可能的問題原因。 100%指的是占用了CPU一個核心,兩個核心是200%,以此類推。CPU占用率及對應進程ID(pid)可以通過top命令確定,在top界面按 c (顯示完整的命令行參數),按 1 (顯示...
摘要:但是往往越簡單的東西越容易讓我們忽視,從而導致一些不該有的發生,作為一名嚴謹的程序員,怎么能讓這種事情發生呢所以下面我們就來了解一下關于日志的那些正確使用姿勢。級別表示出現了嚴重錯誤,程序將會中斷執行。 前言 關于日志,在大家的印象中都是比較簡單的,只須引入了相關依賴包,剩下的事情就是在項目中盡情的打印我們需要的信息了。但是往往越簡單的東西越容易讓我們忽視,從而導致一些不該有的bug發...
摘要:線程堆棧最擅長與分析如下類型問題系統無緣無故過高。性能瓶頸如無法充分利用等線程死鎖死循環,餓死等。由于線程數量太多導致系統失敗如無法創建線程等。注意死鎖的兩個或多個線程是不消耗的,有的人認為的使用率是線程死鎖導致的,這個說法是完全錯誤的。 不知覺間工作已有一年了,閑下來的時候總會思考下,作為一名Java程序員,不能一直停留在開發業務使用框架上面。老話說得好,機會是留給有準備的人的,因此...
摘要:對于引擎來說,兩者獲取堆棧的方式是不同的。對于引擎來說,堆棧信息附加在了函數所返回的并在鏈中傳遞,這樣函數也能在需要的時候獲取堆棧信息。使用可以實時監控線上應用的錯誤,并獲取完整的堆棧信息。 譯者按: Async/Await真的只是簡單的語法糖嗎?No! 原文:Asynchronous stack traces: why await beats .then() 作者: Math...
閱讀 2097·2023-04-26 00:09
閱讀 3115·2021-09-26 10:12
閱讀 3481·2019-08-30 15:44
閱讀 2863·2019-08-30 13:47
閱讀 922·2019-08-23 17:56
閱讀 3226·2019-08-23 15:31
閱讀 475·2019-08-23 13:47
閱讀 2509·2019-08-23 11:56