java日志體系

  1. JDK Logging
    由jdk提供的日志打印類:java.util.logging.Logger
    配置需要啟動(dòng)時(shí)指定,所以用的很少:-Djava.util.logging.config.file=<config-file-name>

  2. Commons Logging
    由apache提供的第三方日志庫(kù)接口,他可以掛接不同的日志系統(tǒng),并通過配置文件指定掛接哪個(gè)日志系統(tǒng)。
    默認(rèn)情況下,Commons Logging會(huì)自動(dòng)搜索并使用Log4j,如果沒有則使用JDK Logging。

  3. Log4j
    Log4j是一種具體實(shí)現(xiàn)。
    Appender -> Filter -> Layout -> socket。
    log4j2.xml 放在classpath即可讓Log4j讀取配置。
    在使用時(shí),不直接應(yīng)用Log4j的類,而是通過Commons Logging作為接口(外觀/門面模式)

  4. SLF4J 和 Logback
    slf4j相當(dāng)于 commons Logging作為日志接口,Logback類似log4j是一種日志實(shí)現(xiàn)。
    slf4j可以使用{}占位符打印日志,且性能做了優(yōu)化。
    logback.xml 方在classpath中即可讓logback讀取配置。

  5. log4j-over-slf4j
    使用 log4j-over-slf4j 替代log4j,這樣log4j接口數(shù)據(jù)的日志就會(huì)通過log4j-over-slf4j路由到slf4j上,這樣即使引入的三方庫(kù)使用log4j打印日志,也會(huì)被統(tǒng)一到系統(tǒng)的slf4j日志中。
    log4j-over-slf4j包按log4j包實(shí)現(xiàn)了其中的各個(gè)類,這樣替換后可以保證編譯不出錯(cuò)。但內(nèi)部代碼則是代理到了slf4j接口。

  6. slf4j-log4j12
    slf4j是門面,log4j是具體實(shí)現(xiàn),但log4j并不是slf4j的原生實(shí)現(xiàn),所以需要一層進(jìn)行橋接。(logback是slf4j的原生實(shí)現(xiàn),所以不需要這種包)。
    如果系統(tǒng)中同時(shí)出現(xiàn)slf4j-log4j12和log4j-over-slf4j就會(huì)形成循環(huán)調(diào)用導(dǎo)致stackoverflow。
    相同的還有(jcl-over-slf4j和slf4j-jcl)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容