Log4j 列印堆疊資訊

2021-09-02 13:13:48 字數 1602 閱讀 5273

我的理解當然很簡單,e.printstacktrace()是在控制台輸出來的,logger4j是在日誌中輸出來的。

後來同事打了個啞謎還有乙個是關係到buffer上的區別,對於這點其實我還是沒有怎麼搞明白,有知道的小夥伴可以來解答下。

2.logger.error(exception)和logger.error("",exception) 看很多人都是後者的寫法,為什麼就不能直接用logger.error(exception)呢?

對於這個問題我們可以對比下輸出結果就知道了,發現前者只列印一行報錯資訊,後者卻可以列印出堆疊資訊。其實這個問題可以在原始碼中探索出來。原來前者只把excetion.tostring()當成message,異常資訊設定成null了。

/**

log a message object with the level.

this method first checks if this category is error

enabled by comparing the level of this category with level. if this category is error

enabled, then it converts the message object passed as parameter

org.apache.log4j.or.objectrenderer}. it proceeds to call all the

hierarchy depending on the value of the additivity flag.

warning note that passing a to this

method will print the name of the throwable but no

stack trace. to print a stack trace use the form instead.

@param message the message object to log */

public

void error(object message)

/**log a message object with the error level including

the stack trace of the t passed as

parameter.

see form for more detailed information.

@param message the message object to log.

@param t the exception to log, including its stack trace. */

public

void error(object message, throwable t)

具體的demo**如下:

package tools;

import org.apache.log4j.logger;

import entity.user;

public class log4jtest catch(exception ex)

}}

log4j列印異常資訊,未列印堆疊

使用logger.error方法時只能列印出異常型別,無法列印出詳細的堆疊資訊,使得定位問題變得困難和不方便。logger類下有多個不同的error方法,根據傳入引數的個數及型別的不同,自動選擇不同的過載方法。當error object obj 只傳入乙個引數時會將異常物件作為object使用,並最...

log4j列印錯誤異常的詳細堆疊資訊

使用logger.error方法時只能列印出異常型別,無法列印出詳細的堆疊資訊,使得定位問題變得困難和不方便。logger類下有多個不同的error方法,根據傳入引數的個數及型別的不同,自動選擇不同的過載方法。當error object obj 只傳入乙個引數時會將異常物件作為object使用,並最...

log4j日誌系統 Log4j

1.1 log4j的三大核心元件 1.2 loggers 記錄器 1.4 layouts 布局 org.apache.log4j.htmllayout 以html 形式布局 org.apache.log4j.patternlayout 可以靈活地指定布局模式 org.apache.log4j.lay...