亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java如何打印完整的堆棧信息

 更新時間:2023年05月17日 09:51:25   作者:wangjuntytl  
這篇文章主要為大家介紹了Java如何打印完整的堆棧信息示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

Java print full StackTrace

我們在編寫一些組件時,使用的日志系統(tǒng)有時并不能打印完整的堆棧信息,比如slf4j,log4j,我們在調(diào)用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時,只是打印了堆棧當(dāng)中的第一行Throwable的信息, 而我們想要的是把整個堆棧都打印出來,這時我們會用下面方式打印堆棧信息。

demo

e.printStackTrace()

堆棧信息定向到日志文件中

這雖然打印了完整的堆棧信息,但它并不會把堆棧信息定向到日志文件中,這時我們就需要利用輸出流把信息重新定到變量中,然后再送入到日志系統(tǒng)中

/**
     * 完整的堆棧信息
     *
     * @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();
    }

然后我們這樣調(diào)用就解決了這個問題

log.error("fount error...", getStackTrace(e))

以上就是Java如何打印完整的堆棧信息的詳細(xì)內(nèi)容,更多關(guān)于Java打印完整堆棧信息的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java和C#輸入輸出流的方法(詳解)

    Java和C#輸入輸出流的方法(詳解)

    下面小編就為大家?guī)硪黄狫ava和C#輸入輸出流的方法(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-10-10
  • spring mvc配置bootstrap教程

    spring mvc配置bootstrap教程

    這篇文章主要為大家詳細(xì)介紹了spring mvc配置bootstrap,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • Java package編譯亂碼問題解決

    Java package編譯亂碼問題解決

    這篇文章主要介紹了Java package編譯亂碼問題解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-05-05
  • java中int初始化可以為0,但不能為NULL問題

    java中int初始化可以為0,但不能為NULL問題

    這篇文章主要介紹了java中int初始化可以為0,但不能為NULL問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • Java反射如何修改private final成員變量值

    Java反射如何修改private final成員變量值

    這篇文章主要介紹了Java反射如何修改private final成員變量值,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-07-07
  • Java方法重載和重寫原理區(qū)別解析

    Java方法重載和重寫原理區(qū)別解析

    這篇文章主要介紹了Java方法重載和重寫原理區(qū)別解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-03-03
  • Java通過Lambda表達(dá)式實現(xiàn)簡化代碼

    Java通過Lambda表達(dá)式實現(xiàn)簡化代碼

    我們在編寫代碼時,常常會遇到代碼又長又重復(fù)的情況,就像調(diào)用第3方服務(wù)時,每個方法都差不多,?寫起來啰嗦,?改起來麻煩,?還容易改漏,所以本文就來用Lambda表達(dá)式簡化一下代碼,希望對大家有所幫助
    2023-05-05
  • Java常用內(nèi)置注解用法分析

    Java常用內(nèi)置注解用法分析

    這篇文章主要介紹了Java常用內(nèi)置注解用法,結(jié)合實例形式分析了java使用@SuppressWarnings關(guān)閉警告信息以及@Depreca標(biāo)注的元素不使用兩種注解使用方法,需要的朋友可以參考下
    2019-08-08
  • Java源碼重讀之ConcurrentHashMap詳解

    Java源碼重讀之ConcurrentHashMap詳解

    ConcurrentHashMap(CHM)是日常開發(fā)中使用頻率非常高的一種數(shù)據(jù)結(jié)構(gòu)。本文將從源碼角度帶大家深入了解一下ConcurrentHashMap的使用,需要的可以收藏一下
    2023-05-05
  • java設(shè)計模式--策略模式詳解

    java設(shè)計模式--策略模式詳解

    這篇文章主要介紹了Java經(jīng)典設(shè)計模式之策略模式,簡單說明了策略模式的概念、原理并結(jié)合實例形式分析了java策略模式的具有用法與相關(guān)注意事項,需要的朋友可以參考下
    2021-07-07

最新評論