1. 程式人生 > >把e.printStackTrace的堆疊資訊列印在log.error()中

把e.printStackTrace的堆疊資訊列印在log.error()中

大家都知道,網站在執行的過程中,列印必要的log對記錄網站的執行情況、從而分析程式問題是很重要的。在Java工程裡面配置好log4j之後就可以進行log記錄了。
log分為幾個級別:error、info、debug、fatal,應根據網站的具體情況,配置合適的level。
例子:
log.error("libzone.cn exception:連結資料庫出錯")
log.info("libzone.cn exception:連結資料庫出錯")
log.debug("libzone.cn exception:連結資料庫出錯")
log.fatal("libzone.cn exception:連結資料庫出錯")。

有時候,我們有必要把出錯時候的異常資訊列印進log裡面,例子:
        }catch (Exception e){
            e.printStackTrace();
            log.error("libzone.cn exception:" + e);
            //log.info("libzone.cn exception:" + e);
            //log.debug("libzone.cn exception:" + e);
            //log.fatal("libzone.cn exception:" + e);
        }
以這種方式,指的是以"libzone.cn exception:" + e這種方式列印異常的時候,只會列印一個異常的概要資訊,例子如下:
libzone.cn exception:com.BusinessException: java.lang.NullPointerException

有時候,這樣的一個概要性的異常資訊對於分析問題幫助不大,有可能我們想把異常的堆疊具體資訊列印在log裡面,那怎麼在log.error()裡面把e.printStackTrace的堆疊具體資訊打印出來呢?這時候我們要以log.XXX(Object obj,Thowable e)這種方式,也就是要將異常物件作為第二個引數傳遞到log的方法中。例子如下:

       }catch (Exception e){
            e.printStackTrace();
            log.error("libzone.cn exception:", e);
            //log.info("libzone.cn exception:", e);
            //log.debug("libzone.cn exception:", e);
            //log.fatal("libzone.cn exception:", e);
        }
這樣,我們就可以在log日誌裡面看到類似於控制檯(console)裡面那樣的異常詳細資訊了。
如果全部把異常詳細打印出來,有可能造成日誌檔案會很大;列印概要資訊,可能對分析問題幫助不大。應根據自己的實際情況,選擇合適的方式。

相關推薦

e.printStackTrace堆疊資訊列印log.error()

大家都知道,網站在執行的過程中,列印必要的log對記錄網站的執行情況、從而分析程式問題是很重要的。在Java工程裡面配置好log4j之後就可以進行log記錄了。log分為幾個級別:error、info、debug、fatal,應根據網站的具體情況,配置合適的level。例子:log.error("libzon

Java控制檯的e.printStackTrace()異常資訊轉為String型別

import java.io.PrintWriter; import java.io.StringWriter;public class ExceptionUtil { public ExceptionUtil() { } public static String toSt

log4j的日誌資訊列印到swing元件上

網上有很多把system的資訊列印到swing的元件上的,這個就不說了。但是預設情況下log4j的是列印不到的。那怎麼辦呢,肯定首先要做到還是讓system的資訊列印到swing,接著再來操作這個步驟: 為自己應用程式的輸出控制檯還是不錯的。有個問題,如果要捕獲 Log4J

java Exception出錯的棧資訊列印到日誌

try {   .... } catch (Exception e) {   e.printStackTrace();   log.err(e.getMessage());    ..... } 通常我們都會去這樣找到出錯的資訊,而列印的出錯的資訊棧

golang 列印error堆疊資訊

眾所周知,目前的golang error只關注Error()資訊,而不關注它的堆疊路徑,對錯誤的定位大多數通過 log.SetFlags(log.Llongfile| log.LstdFlags) log.Println(e) 一旦程式碼分層,為了定位錯誤,可能出現每一個層

$.ajax列印error堆疊資訊

$.ajax用error:function(data,type, err)列印error堆疊資訊,可以檢視因為什麼原因失敗而執行error函式 $.ajax({type:"GET", url:url, dataType:"json",

Logger.error方法之列印錯誤異常的詳細堆疊資訊

開發十年,就只剩下這套架構體系了! >>>   

log.error(msg)和log.error(msg,e)的顯示區別

transfer lee process lang rac java error oop kthread log.error(msg): [2017-10-18 11:31:07,652] [Thread-7] (CmsCtlDataUploadFileExchange.

python列印堆疊資訊

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Golang panic 列印堆疊資訊

一. 緣起 程式程序後臺執行 monitor 監控程式負責拉起程式 當因為邏輯問題導致後臺程序掛掉時,不容易發現程式曾經掛過。 golang 可以通過 recover 捕獲 error,並將 panic 時的堆疊列印到日誌來定位問題。 $ tree p

JAVA 日誌異常沒有列印堆疊資訊問題

在生產環境中異常資訊沒有堆疊資訊的異常2018-06-23 12:10:00.029 [ threadPoolTaskScheduler-10 ] - [ ERROR ] [ com.vanvov.hms.exception.SchedulerErrorHandler : 2

log日誌列印異常棧的具體資訊

問題與分析 最近在查專案的log時發現報了大量的NPE(NullPointerException),詭異的是隻log了Exception的類名,卻沒有具體的堆疊資訊,以致於無法對該NPE異常進行準確定位。 這是因為jvm自身存在著優化機制,但一個同樣的異常重複出現並被列印到log

PHP列印LOG資訊方式

 <html><body>中使用:print_r和echo <?php print_r($result);?> //可以輸出任何格式的資訊 <?php echo $result;?>//只可以輸出String格式的資訊 <

python列印log除錯資訊的方法

方法2.列印到檔案 import logging LOG_FILENAME = '/tmp/logging_example.out' logging.basicConfig(filename=LOG_FILENAME,level=logging.DEBUG,) #log 列印格式配置 #logging.bas

AndroidJni學習總結--Jni列印log資訊

一、在jni中c++層進行log的列印 1、在需要使用log的cpp檔案中加入 #include <android/log.h> 2、在需要列印的地方直接呼叫 __android_log_print(ANDROID_LOG_INFO,"test","value is %

列印java異常堆疊資訊到日誌檔案

存在問題:e.printStackTrace();無法直接將堆疊資訊,列印到日誌檔案。 解決辦法: 程式碼如下: public class LogExceptionStackUtil { /**

NullPointerException列印太多了,就有可能被jdk優化,不列印堆疊資訊

The compiler in the server VM now provides correct stack backtraces for all "cold" built-in exceptions. For performance purposes, when suc

Log4j 列印堆疊資訊

      前幾天同事突然問了個問題讓我不大理解,先在這裡記錄下。      1.log4j.error和e.printstacktrace()有什麼區別?             我的理解當然很簡單,e.printstacktrace()是在控制檯輸出來的,logger4j是在日誌中輸出來的。   後來

linux程式跑掛時堆疊資訊日誌列印

程式碼如下:void gdb_signal_handler(int signo) { char buff[64] = {0}; sprintf(buff,"cat /proc/%d/maps", getpid()); system((const char*) buff)

利用Xposed Hook列印Java函式呼叫堆疊資訊的幾種方法

在進行Android逆向分析的時候,經常需要進行動態除錯棧回溯,檢視Java函式的呼叫流程,Android的smali動態除錯又不是很方便,因此使用Android的Java Hook的方法,列印Java函式呼叫堆疊資訊輔助靜態分析。package com.xposeddemo