摘要:一引言程序員都知道,日志對于一個(gè)應(yīng)用系統(tǒng)來說至關(guān)重要,現(xiàn)在應(yīng)該也沒有無日志的系統(tǒng)了吧。具體的日志實(shí)現(xiàn)還是需要使用不同的日志框架來完成。然后如下使用測試測試測試測試運(yùn)行結(jié)果發(fā)現(xiàn)并沒有打印出日志,這是因?yàn)槿鄙倭伺渲梦募?/p>
一、引言
程序員都知道,日志對于一個(gè)應(yīng)用系統(tǒng)來說至關(guān)重要,現(xiàn)在應(yīng)該也沒有無日志的系統(tǒng)了吧。很多程序員都知道 Log4j,Logback,java.util.logging 等日志庫,最近看到一些老的項(xiàng)目還是單純地只使用 Log4j 等日志庫,如果你還不懂 Slf4j,那么從現(xiàn)在開始,該是時(shí)候?qū)W習(xí)使用下 Slf4j 了。二、簡單使用SLF4J,即簡單日志門面(Simple Logging Facade for Java),它并不是用來替代 Log4j,Logback 等日志庫的,它只是提供了一堆接口以及一個(gè) LoggerFactory 工廠類,是為了兼容不同的日志庫而抽象出來的適配器接口。具體的日志實(shí)現(xiàn)還是需要使用不同的日志框架來完成。
SLF4J 和 JCL(以前叫 Jakarta Commons Logging,現(xiàn)在叫 Apache Commons Logging) 都是日志門面,所不同的是 JCL 是在運(yùn)行時(shí)動(dòng)態(tài)尋找日志庫進(jìn)行綁定,SLF4J 是在編譯時(shí)靜態(tài)綁定指定的日志庫?,F(xiàn)在還是很多應(yīng)用系統(tǒng)使用 JCL + Log4j 這種搭配的,不過當(dāng)程序規(guī)模越來越龐大是,JCL 的動(dòng)態(tài)綁定并不是總能成功的,在Sping官方文檔中 Not Using Commons Logging 小節(jié)也提到因?yàn)樗惴▎栴}引起。大概這也是 SLF4J 產(chǎn)生的一個(gè)原因吧。
這里使用 slf4j + log4j 演示下簡單的使用。需要導(dǎo)入三個(gè)包:slf4j-1.7.25.jar,slf4j-log4j12-1.7.25.jar, log4j-1.2.17.jar 。然后如下使用:
package cn.mqq; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author mqq * @create 2018-03-13 23:46 */ public class Test { private static final Logger log = LoggerFactory.getLogger(Test.class); public static void main(String[] args) { log.debug("debug 測試"); log.info("info 測試"); log.warn("warn 測試"); log.error("error 測試"); } }
運(yùn)行結(jié)果:
發(fā)現(xiàn)并沒有打印出日志,這是因?yàn)槿鄙倭?log4j.properties 配置文件。在 /src/main/resources 目錄下添加文件 log4j.properties,內(nèi)容如下:
log4j.rootLogger = DEBUG,CONSOLE log4j.appender.CONSOLE = org.apache.log4j.ConsoleAppender log4j.appender.CONSOLE.Threshold = INFO log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout log4j.appender.CONSOLE.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} [%c] - %m%n
再次運(yùn)行如下:
運(yùn)行工程。
三、小結(jié)日志的使用就是這么簡單,用了 slf4j 以后,通過修改不同的 jar 包,可以很方便地更換不同的日志框架,如把 slf4j-log4j12-1.7.25.jar 和 log4j-1.2.17.jar 換成 logback-classic-1.2.3.jar 包即可把 log4j 日志庫換成 logback 日志庫,配置文件也要換成相應(yīng)的 logback 配置文件。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/68796.html
摘要:歡迎大家收看聊一聊系列,這一套系列文章,可以幫助前端工程師們了解前端的方方面面不僅僅是代碼什么是功能統(tǒng)計(jì)作為一名開發(fā),我們的產(chǎn)品發(fā)布出去之后,無論是產(chǎn)品還是運(yùn)營,其實(shí)都是想及時(shí)了解產(chǎn)品對用戶產(chǎn)生的影響的。下一章,我們將繼續(xù)聊聊速度統(tǒng)計(jì)。 歡迎大家收看聊一聊系列,這一套系列文章,可以幫助前端工程師們了解前端的方方面面(不僅僅是代碼):https://segmentfault.com/bl...
摘要:歡迎大家收看聊一聊系列,這一套系列文章,可以幫助前端工程師們了解前端的方方面面不僅僅是代碼什么是功能統(tǒng)計(jì)作為一名開發(fā),我們的產(chǎn)品發(fā)布出去之后,無論是產(chǎn)品還是運(yùn)營,其實(shí)都是想及時(shí)了解產(chǎn)品對用戶產(chǎn)生的影響的。下一章,我們將繼續(xù)聊聊速度統(tǒng)計(jì)。 歡迎大家收看聊一聊系列,這一套系列文章,可以幫助前端工程師們了解前端的方方面面(不僅僅是代碼):https://segmentfault.com/bl...
閱讀 3413·2021-10-11 11:06
閱讀 2194·2019-08-29 11:10
閱讀 1956·2019-08-26 18:18
閱讀 3262·2019-08-26 13:34
閱讀 1568·2019-08-23 16:45
閱讀 1046·2019-08-23 16:29
閱讀 2807·2019-08-23 13:11
閱讀 3237·2019-08-23 12:58