日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java log4j权限被否定_SLF4J简介与使用(整合log4j)

發布時間:2025/3/12 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java log4j权限被否定_SLF4J简介与使用(整合log4j) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、概念

SLF4J的全稱是Simple Logging Facade for Java,即簡單日志門面。SLF4J并不是具體的日志框架,而是作為一個簡單門面服務于各類日志框架,如java.util.logging, logback和log4j。

SLF4J提供了統一的記錄日志的接口,對不同日志系統的具體實現進行了抽象化,只要按照其提供的方法記錄即可,最終日志的格式、記錄級別、輸出方式等通過綁定具體的日志系統來實現。

使用SLF4J的好處在于,你只需要按統一的方式寫記錄日志的代碼,如:

public class LoggerTest {

private static final Logger logger = LoggerFactory.getLogger(Tester.class);

public static void main(String[] args) {

logger.info("Current Time: {}", System.currentTimeMillis());

}

}

SLF4J支持{}作為占位符,等價于C語言中的%s,而不必再進行字符串的拼接,效率有顯著的提升(見后面運行結果)。

而無需關心日志是通過哪個日志系統,以什么風格輸出的。因為它們取決于部署項目時綁定的日志系統。

例如,在項目中使用了SLF4J記錄日志,并且綁定了log4j,則日志會以log4j的風格輸出;后期需要改為以logback的風格輸出日志,只需要將log4j替換成logback即可,不用修改項目中的代碼。

二、依賴

SLF4J綁定各類日志框架的原理圖:

由上圖可知,使用SLF4J依賴于slf4j-api-1.8.0-alpha2.jar,部署時還依賴于要綁定的日志系統的jar包和相應的適配器jar包。

以綁定log4j為例,需要導入以下包:

slf4j-api-1.8.0-alpha2.jar

log4j-1.2.17.jar

slf4j-log4j12-1.8.0-alpha2.jar

如果使用Maven,則只需添加適配器jar包依賴即可:

org.slf4j

slf4j-log4j12

1.8.0-alpha2

三、使用示例

這里以SLF4J + log4j為例。

1.在pom.xml中添加依賴(或者手動導入上述3個jar包):

org.slf4j

slf4j-log4j12

1.8.0-alpha2

2.配置log4j

在類路徑下創建log4j.properties配置文件,這樣log4j會自動加載配置文件。

# rootLogger參數分別為:根Logger級別,輸出器stdout,輸出器log

log4j.rootLogger = info,stdout,log

# 輸出信息到控制臺

log4j.appender.stdout = org.apache.log4j.ConsoleAppender

log4j.appender.stdout.layout = org.apache.log4j.PatternLayout

log4j.appender.stdout.layout.ConversionPattern = %d [%-5p] %l %rms: %m%n

# 輸出DEBUG級別以上的日志到D://logs/debug.log

log4j.appender.log = org.apache.log4j.DailyRollingFileAppender

log4j.appender.log.DatePattern = '.'yyyy-MM-dd

log4j.appender.log.File = D://debug.log

log4j.appender.log.Encoding = UTF-8

#log4j.appender.log.Threshold = INFO

log4j.appender.log.layout = org.apache.log4j.PatternLayout

log4j.appender.log.layout.ConversionPattern = %d [%-5p] (%c.%t): %m%n

將log4j.properties放在類路徑下是最簡單的做法,當然也可以通過PropertyConfigurator在代碼中加載或者通過web.xml加載。3.測試代碼

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

public class LoggerTest {

private static final Logger logger = LoggerFactory.getLogger(LoggerTest.class);

public static void main(String[] args) {

logger.info("Current Time: {}", System.currentTimeMillis());

logger.info("Current Time: " + System.currentTimeMillis());

logger.info("Current Time: {}", System.currentTimeMillis());

logger.trace("trace log");

logger.warn("warn log");

logger.debug("debug log");

logger.info("info log");

logger.error("error log");

}

}

4.運行結果

2017-06-16 23:11:05,490 [INFO ] com.jiapengcs.demos.slf4j.LoggerTest.main(LoggerTest.java:14) 0ms: Current Time: 1497625865488

2017-06-16 23:11:05,493 [INFO ] com.jiapengcs.demos.slf4j.LoggerTest.main(LoggerTest.java:15) 3ms: Current Time: 1497625865493

2017-06-16 23:11:05,493 [INFO ] com.jiapengcs.demos.slf4j.LoggerTest.main(LoggerTest.java:16) 3ms: Current Time: 1497625865493

2017-06-16 23:11:05,495 [WARN ] com.jiapengcs.demos.slf4j.LoggerTest.main(LoggerTest.java:18) 5ms: warn log

2017-06-16 23:11:05,495 [INFO ] com.jiapengcs.demos.slf4j.LoggerTest.main(LoggerTest.java:20) 5ms: info log

2017-06-16 23:11:05,495 [ERROR] com.jiapengcs.demos.slf4j.LoggerTest.main(LoggerTest.java:21) 5ms: error log

通常輸出日志開銷非常大,從上述結果可見,SLF4J通過{}作為占位符的方式輸出字符串,相比字符串拼接的方式,效率有顯著的提升。

5.更換日志系統

看到這里,你可能會有疑問:既然都用了log4j,為什么還要用SLF4J來寫記錄日志的代碼呢,不是多此一舉嗎?

答案是否定的。假設我們不再需要log4j,而是希望改為使用java自帶logging記錄日志,我們需要做的僅僅是將pom.xml的依賴項slf4j-log4j12改為slf4j-jdk14即可,無需對上述測試代碼做任何修改。

org.slf4j

slf4j-jdk14

1.8.0-alpha2

是的,就是這么簡單。再次運行測試代碼:

六月 16, 2017 10:32:30 下午 com.jiapengcs.demos.slf4j.LoggerTest main

信息: Current Time: 1497623550843

六月 16, 2017 10:32:30 下午 com.jiapengcs.demos.slf4j.LoggerTest main

信息: Current Time: 1497623550874

六月 16, 2017 10:32:30 下午 com.jiapengcs.demos.slf4j.LoggerTest main

信息: Current Time: 1497623550875

六月 16, 2017 10:32:30 下午 com.jiapengcs.demos.slf4j.LoggerTest main

警告: warn log

六月 16, 2017 10:32:30 下午 com.jiapengcs.demos.slf4j.LoggerTest main

信息: info log

六月 16, 2017 10:32:30 下午 com.jiapengcs.demos.slf4j.LoggerTest main

嚴重: error log

我們發現,此時日志已經變為以logging的方式輸出。

四、總結

SLF4J的使用非常簡單,甚至連官網上都說鑒于它太輕量,文檔篇幅不長。

Given the small size of SLF4J, its documentation is not very lengthy.

在《阿里巴巴Java開發手冊(正式版)》中,日志規約一項第一條就強制要求使用SLF4J:

1.【強制】應用中不可直接使用日志系統(Log4j、Logback)中的API,而應依賴使用日志框架SLF4J中的API,使用門面模式的日志框架,有利于維護和各個類的日志處理方式統一。

所以從現在開始使用SLF4J吧!

總結

以上是生活随笔為你收集整理的java log4j权限被否定_SLF4J简介与使用(整合log4j)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。