<
dependency
>
<
groupid
>
org.slf4j
groupid
>
<
artifactid
>
slf4j-api
artifactid
>
<
version
>
1.7.21
version
>
dependency
>
<
dependency
>
<
groupid
>
org.slf4j
groupid
>
<
artifactid
>
slf4j-log4j12
artifactid
>
<
version
>
1.7.21
version
>
dependency
>
<
dependency
>
<
groupid
>
log4j
groupid
>
<
artifactid
>
log4j
artifactid
>
<
version
>
1.2.17
version
>
dependency
>
log4j.rootlogger or log4j.rootcategory
org.apache.log4j.******layout
org.apache.log4j.htmllayout
org.apache.log4j.xml.xmllayout
org.apache.log4j.ttcclayout
org.apache.log4j.patternlayout(常用)
log4j.debug log的log日誌輸出
#%m——輸出**中指定的訊息
#%p——輸出優先順序,即debug、info、warn、error、fatal
#%r——輸出自應用啟動到輸出該log資訊耗費的毫秒數
#%c——輸出所屬的類目,通常就是所在類的全名
#%t——輸出產生該日誌事件的執行緒名
#%n——輸出乙個回車換行符,windows平台為"\r\n",unix平台為"\n"
#%d——輸出日誌時間點的日期或時間,預設格式為iso8601,也可以在其後指定格式
#比如:%d,輸出類似:
#2023年7月21日 12:12:12,921
#%l——輸出日誌事件的發生位置,包括類目名、發生的執行緒、以及在**中的行數
#%x: mdc。
#%%: 輸出乙個"%"字元
#%f: 輸出日誌訊息產生時所在的檔名稱
#%l: 輸出**中的行號(%l已包含了行號)
#此配置是patternlayout對應的 其他的layout配置 會出現警告日誌
log4j配置動態修改配置檔案 propertyconfigurator configure/configureandwatch
log4j的mdc ndc,我們日誌中心的上下文實現
slf4j的format
○ logger對記錄日誌動作的抽象,它提供了記錄不同級別日誌的介面
○ rootlogger在log4j中,所有logger例項組成乙個單根的樹狀結構,沒有父節點,其level欄位必須設值以防止其他logger例項都沒有設定level值的情況
○ loggerrepository、logger例項的容器 其實現類 hierarchy
○ level 日誌級別抽象
○ loggingevent 日誌資訊
○ layout 輸出的格式
○ logmanager 將configurator和loggerrepository整合在一起
自定義layout,自定義layout
1、介面卡模式 logger的封裝 log4jloggeradapter
2、單例模式 staticloggerbinder
3、工廠模式 ilogge***ctory
4、外觀模式 logger
5、直譯器模式 patternlayout
SLF4J Log4j 日誌配置
最近現場乙個同步程式經常導致cpu 100 經分析判斷,很可能是這個同步程式頻繁呼叫io導致,因原有的日誌是通過手工寫檔案,沒有使用第三方工具,可能存在問題。所以今天一狠心就決定替換掉原來的寫日誌方式。之前基本沒碰過日誌工具方面的東西,只是使用,一直有點犯怵。今天在網上一搜還是有很多,但各種說法都有...
日誌框架統一輸出控制(slf4j log4j)
場景 乙個專案中融合多個採用不同日誌記錄的框架。不同的框架採用的預設日誌框架不同,有些用的slf4j,有些用的log4j。專案中我們需要統一控制日誌的列印格式和列印級別。方案 將log4j和slf4j整合 保留原本的log4j的jar包,刪除slf4j 1.5.8.jar,然後匯入slf4j api...
slf4j log4j列印日誌,控制台無日誌輸出
今天看以前的專案,執行起來報錯,專案日誌對於專案是很重要的,但是控制台沒有列印出來日誌,執行起來報錯的問題先放一放,先把日誌的問題解決了,我專案中有log4j.propertie 檢查一番之後,到底為什麼沒有把日誌列印出來,控制台為什麼沒有顯示,下面我們來看 檢查各項都沒問題控制台日誌沒有輸出slf...