摘要:想要看級(jí)別的信息,你需要在啟動(dòng)時(shí)傳入這個(gè)系統(tǒng)屬性使用與日志現(xiàn)在我們可以試驗(yàn)并更換不同的日志實(shí)現(xiàn),但你的程序代碼可以保持不變。我們要做的是用另一個(gè)流行的日志實(shí)現(xiàn)來(lái)替換掉,比如。又一次,我們必須對(duì)我們選的每一個(gè)日志實(shí)現(xiàn)做配置。
使用slf4j庫(kù)作為你的Java應(yīng)用日志API層有很多好處,這里我會(huì)展示一小部分關(guān)于如何使用和配置它的例子。
你可以把slf4j想成一個(gè)Java的接口,然后你需要實(shí)現(xiàn)這個(gè)接口,從而在運(yùn)行時(shí)提供實(shí)際的日志記錄,例如把日志寫(xiě)到控制臺(tái)(STDOUT)或者一個(gè)文件上等等。每種實(shí)現(xiàn)(或成為綁定)都顯而易見(jiàn)地有他們自己的方式來(lái)配置日志的輸出,但是你的應(yīng)用對(duì)實(shí)現(xiàn)者并無(wú)感知并且一直使用相同的org.slf4j.Logger API。讓我們看看如何在實(shí)際中使用它。
使用slf4j做簡(jiǎn)單的日志記錄創(chuàng)建基于Maven的工程,在pom.xml中添加如下內(nèi)容
org.slf4j slf4j-api 1.7.5
現(xiàn)在你可以在你的Java代碼中這樣使用Logger
package deng; import org.slf4j.*; public class Hello { static Logger LOGGER = LoggerFactory.getLogger(Hello.class); public static void main(String[] args) { for (int i = 0; i < 10; i++) if (i % 2 == 0) LOGGER.info("Hello {}", i); else LOGGER.debug("I am on index {}", i); } }
以上代碼可以編譯通過(guò),但是當(dāng)你運(yùn)行它時(shí),你會(huì)看到這樣的輸出
bash> java deng.Hello SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
上面的意思是,在運(yùn)行時(shí),你沒(méi)有做日志的實(shí)現(xiàn)(或者說(shuō)日志的綁定),所以slf4j簡(jiǎn)簡(jiǎn)單單的使用了一個(gè)什么也不會(huì)做的空實(shí)現(xiàn)。
為了看到正確的輸出,你應(yīng)該嘗試使用一個(gè)簡(jiǎn)單(simple)的實(shí)現(xiàn),這個(gè)實(shí)現(xiàn)根本不需要任何配置!只要回到pom.xml然后添加如下配置
org.slf4j slf4j-simple 1.7.5
現(xiàn)在你可以在控制臺(tái)(STDOUT)看見(jiàn)INFO級(jí)別的日志輸出了。這個(gè)簡(jiǎn)單的logger會(huì)默認(rèn)顯示任何INFO或者更高級(jí)別的信息。想要看DEBUG級(jí)別的信息,你需要在Java啟動(dòng)時(shí)傳入這個(gè)系統(tǒng)屬性(system property)
使用slf4j與Log4j日志-Dorg.slf4j.simpleLogger.defaultLogLevel=DEBUG
現(xiàn)在我們可以試驗(yàn)并更換不同的日志實(shí)現(xiàn),但你的程序代碼可以保持不變。
我們要做的是用另一個(gè)流行的日志實(shí)現(xiàn)來(lái)替換掉slf4j-simple,比如Log4j。
org.slf4j slf4j-log4j12 1.7.5
又一次,我們必須對(duì)我們選的每一個(gè)日志實(shí)現(xiàn)做配置。在這個(gè)例子中,我們需要一個(gè)文件src/main/resources/log4j.properties。
log4j.rootLogger=DEBUG, STDOUT log4j.logger.deng=INFO log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender log4j.appender.STDOUT.layout=org.apache.log4j.PatternLayout log4j.appender.STDOUT.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
重運(yùn)行你的程序,你會(huì)看到同樣的輸出結(jié)果。
使用slf4j和JDK日志JDK實(shí)際上帶有一個(gè)日志包,你可以在pom.xml中替換為另一個(gè)日志實(shí)現(xiàn)。
org.slf4j slf4j-jdk14 1.7.5
現(xiàn)在JDK日志的配置起來(lái)有一點(diǎn)困難。這里不僅需要一個(gè)配置文件src/main/resources/logging.properties,你還需要添加一個(gè)系統(tǒng)屬性
-Djava.util.logging.config.file=logging.properties
這是一個(gè)logging.properties的示例
使用slf4j和Logback日志level=INFO
handlers=java.util.logging.ConsoleHandler
java.util.logging.ConsoleHandler.level=FINEST
deng.level=FINEST
Logback日志實(shí)現(xiàn)是一個(gè)高質(zhì)量的實(shí)現(xiàn)。如果你想在項(xiàng)目中寫(xiě)認(rèn)真的代碼,你會(huì)想要考慮這中方式。還是修改你的pom.xml文件,替換成這樣
ch.qos.logback logback-classic 1.0.13
這是一個(gè)簡(jiǎn)單的配置src/main/resources/logback.xml
用slf4j寫(xiě)你自己的日志庫(kù)%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
如果你正在很多終端用戶(hù)(END USER)提供Java庫(kù),那么讓你的項(xiàng)目?jī)H依賴(lài)slf4j-api絕對(duì)是個(gè)好想法,然后讓你的用戶(hù)在他們開(kāi)發(fā)和運(yùn)營(yíng)環(huán)境中選擇任意的日志實(shí)現(xiàn)。作為終端用戶(hù),他們可以快速地從上面提到的日志庫(kù)中選擇一個(gè),并且從他們自己喜歡的日志實(shí)現(xiàn)的特性中受益。
翻譯自: How to Configure SLF4J with Different Logger Implementations
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/64620.html
摘要:這篇文章是邊聽(tīng)尚硅谷的課程邊記的筆記,也是為了之后方便查看,視頻鏈接精彩的故事小張負(fù)責(zé)一個(gè)大型系統(tǒng)的開(kāi)發(fā),為了監(jiān)控系統(tǒng)的運(yùn)行狀況,系統(tǒng)中包含大量的語(yǔ)句,為了更好地管理呢,小張決定寫(xiě)一個(gè)日志框架對(duì)日志進(jìn)行管理,他設(shè)想的日志框架應(yīng)該包含以下幾個(gè) 這篇文章是邊聽(tīng)尚硅谷的課程邊記的筆記,也是為了之后方便查看,視頻鏈接:https://www.bilibili.com/vide... 1. 精彩...
摘要:日志消息,是換行符如果使用作為日志配置文件,還要使用功能,會(huì)有以下錯(cuò)誤切換日志框架可以按照的日志適配圖,進(jìn)行相關(guān)的切換的方式切換為 三、日志 1、日志框架 小張;開(kāi)發(fā)一個(gè)大型系統(tǒng); 1、System.out.println();將關(guān)鍵數(shù)據(jù)打印在控制臺(tái);去掉?寫(xiě)在一個(gè)文件? 2、框架來(lái)記錄系統(tǒng)的一些運(yùn)行時(shí)信息;日志框架 ; zhanglogging.jar; 3、高大上的幾個(gè)功能?異步...
摘要:深入學(xué)習(xí)系列三那些年我們用過(guò)的日志框架目前常見(jiàn)的日志框架和中文似乎不太好翻譯有一下幾種即其中,為同一個(gè)作者所寫(xiě)。如前面所述,在才被引入,在這之前,并沒(méi)有官方的日志庫(kù)供開(kāi)發(fā)者使用。 title: 【Java深入學(xué)習(xí)系列】三. 那些年我們用過(guò)的日志框架date: 2016-10-16 15:32:50 category: java 目前常見(jiàn)的Java日志框架和facades(中文似乎不太好...
摘要:本文要來(lái)分享給大家程序員最常用的日志框架組件。沒(méi)有基礎(chǔ)的同學(xué)也不要著急,這套教程覆蓋了目前所有的日志框架,只要你學(xué),就一定用得到,先收藏,以備不時(shí)之需。 作為一名Java程序員,我們開(kāi)發(fā)了很多Java應(yīng)用程序,包括桌面應(yīng)用、WEB應(yīng)用以及移動(dòng)應(yīng)用。然而日志系統(tǒng)是一個(gè)成熟Java應(yīng)用所必不可少的。在開(kāi)發(fā)和調(diào)試階段,日志可以幫...
閱讀 2342·2021-11-25 09:43
閱讀 3354·2021-10-14 09:42
閱讀 3555·2021-10-12 10:12
閱讀 1632·2021-09-07 10:17
閱讀 1985·2019-08-30 15:54
閱讀 3244·2019-08-30 15:54
閱讀 1610·2019-08-30 15:53
閱讀 1996·2019-08-29 11:21