log4j學習筆記

2021-09-01 12:11:02 字數 1963 閱讀 1316

官方文件

參考

1.logger

1.1 logger

logger是我們列印日誌之前去的的控制日誌列印的物件

logger具有自己的名稱,根據名稱的可包含關係具有繼承性

例如: 名字為com.foo的logger是com.foo.bar的logger的祖先,因為它們2個之間只相差乙個.後面的字元,因此com.foo的logger是com.foo.bar的logger的父親

root是所有logger的祖先,除了root之外,所有logger獲取的方式都是通過名稱獲取

1.2日誌的等級

獲取logger列印日誌的時候,需要指定日誌的level,log4j中日誌的等級有

fatal>error>warn>info>debug>trace>all

每乙個和logger上都會預定義乙個defaultlevel,只有》=defaultlevel的日誌才會輸出,如果該logger上沒有指定defaultlevel,那麼它會繼承自它的父logger的defaultlevel,以此類推,直到root

3. layouts

3.1 layout

3.2 輸出格式定義

%c        輸出所屬類的全名,可在修改為 %d ,num類名輸出的維(如:"org.apache.elathen.classname",%c將輸出          elathen.classname)

%d       輸出日誌時間其格式為 %d,可指定格式 如 %d

%l        輸出日誌事件發生位置,包括類目名、發生執行緒,在**中的行數

%n       換行符

%m      輸出**指定資訊,如info(「message」),輸出message

%p       輸出優先順序,即 fatal ,error 等

%r        輸出從啟動到顯示該log資訊所耗費的毫秒數

%t        輸出產生該日誌事件的執行緒名

4.配置和使用

log4j的初始化需要讀取乙個配置檔案,這個配置檔案的名稱存放在log4j.configuration 系統屬性當中。

如果沒有的話,缺省會先尋找 classapth下的 log4j.xml ,如果找不到再尋找classpath下的 log4j.properties

4.1  log4j.properties配置檔案示例

log4j.rootlogger=debug, stdout, r

4.2 log4j.xml配置檔案示例

<?xml version="1.0" encoding="utf-8"?>

4.3 使用

log4j的使用是非常簡單的

public class basictest

} 5. 關於日誌使用的幾點建議

5.1 對於異常的日誌最好列印堆疊

故障排查是,檢視線上日誌時乙個最直接的途徑,我們希望在日誌中列印出來一場堆疊

例如 logger.error("error msg", e);

5.2 列印的日誌訊息內容最好可以有業務場景資訊

列印出來的日誌最好有業務場景的上下文內容

例如 logger.error("訊息推送過程中發生異常, message:" + mesage.tostring() , e);

5.3 最好在輸出日誌的方法上進行判斷

只有輸出日誌的級別》=logger預定級別的時候,這條日誌才會被輸出

看下面一行**:

logger.debug("entry number: " + i + " is " + string.valueof(entry[i]));

如果 輸出日誌的級別

if(logger.isdebugenabled()

進一步修改,可以使用stringbuilder替代string的直接拼接

log4j學習筆記

先貼幾個官方的東西 log4j日誌等級從高到低 分為off fatal error warn info debug all或者您定義的級別。log4j建議只使用四個級別,優先順序從高到低分別是error warn info debug。通過在這裡定義的級別,您可以控制到應用程式中相應級別的日誌資訊的...

Log4j 學習筆記

log4j 由三個重要的元件構成 日誌資訊的優先順序,日誌資訊的輸出目的地,日誌資訊的輸出格式。日誌資訊的優先順序從高到低有 error warn info debug 分別用來指定這條日誌資訊的重要程度 日誌資訊的輸出目的地指定了日誌將列印到控制台還是檔案中 而輸出格式則控制了日誌資訊的顯示內容。...

log4j學習筆記

rootlogger是新的使用名稱,對應logger類 rootcategory是舊的使用名稱,對應原來的category類 logger類是category類的子類,所以,rootcategory是舊的用法,不推薦使用 m 輸出 中指定的訊息 p 輸出優先順序,即debug,info,warn,e...