ref:下一个项目为什么要用 SLF4J
ref:http://blog.mayongfa.cn/267.html
阿里巴巴 Java 開發手冊
前幾天阿里巴巴在云棲社區首次公開阿里官方Java代碼規范標準,就是一個PDF手冊,有命名規范,讓你知道自己原來取的每一個類名、變量名都是爛名字,真替你家未來孩子擔心;有集合處理、并發處理、OOM/NPE 異常、魔法值等等好多規范,什么?你不知道什么是魔法值,算了,我也是第一次聽說:即未經定義的常量;還有一個關于?Map 遍歷的推薦,這個大家應該都知道,推薦使用 entrySet 遍歷 Map 類集合 KV,而不是 keySet 方式進行遍歷。 因為 keySet 是遍歷了 2 次,而 entrySet 只是遍歷了一次就把 key 和 value 都放到了 entry 中,效率更高。還有接口類中的方法和屬性不要加任何修飾符號(public 也不要加)這些推薦做法,這些都沒什么,日常開發中應該做到的規范,但下面這個【強制】,我發現我接觸的項目都沒做到。
【強制】應用中不可直接使用日志系統(Log4j、Logback)中的 API
在手冊中的日志規約中,看到有一條這樣的規定,說實話我有點懵逼, Log4j 不是 Java 中應用最廣的日志系統么?為啥不讓用?
【強制】應用中不可直接使用日志系統(Log4j、Logback)中的API,而應依賴使用日志框架SLF4J中的API,使用門面模式的日志框架,有利于維護和各個類的日志處理方式統一。
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private static final Logger logger = LoggerFactory.getLogger(Abc.class);
在這段規約中看到了推薦使用?SLF4J?這個日志框架,而且還是毫不由分說的【強制】,那它到底好在什么地方?
SLF4J,即簡單日志門面(Simple Logging Facade for Java),不是具體的日志解決方案,它只服務于各種各樣的日志系統。按照官方的說法,SLF4J是一個用于日志系統的簡單Facade,允許最終用戶在部署其應用時使用其所希望的日志系統。來自百科里的描述
大概意思就是說 SLF4J 是一個日志抽象層,允許你使用任何一個日志系統,并且可以隨時切換還不需要動到已經寫好的程序(我特么是真改過整個項目的所有打印日志的代碼,累死...),這對于第三方組件的引入的不同日志系統來說幾乎零學習成本了,況且它的優點不僅僅這一個而已,還有簡潔的占位符的使用和日志級別的判斷,眾所周知的日志讀寫一定會影響系統的性能,但這些特性都是對系統性能友好的。官網地址:https://www.slf4j.org/
少廢話,你來測試一下
說了辣么多,下面我就將建立一個項目,是 Maven 項目哦,并用 SLF4J 來結合?JDK14、Simple、Logback、Log4j做日志系統,在上述幾個日志系統間隨意切換,而且不修改一行代碼,甚至不用修改一個字符。
1.首先建立一個簡單的 Java 項目(Maven Project),目錄結構如下:
2.在 pom.xml 中增加 SLF4J API 依賴包
使用的目前最新穩定版 1.7.22 的 SLF4J:
jar 包:?slf4j-api-1.7.22.jar
接著并在測試項目中的?App.java?中加入日志輸出代碼,代碼如下:
到這里,代碼就寫完了、寫完了。以后無論在 Log4j 還是 Logback 日志系統切換,都不需要修改這里的代碼!一個字符都不需要!!
3. JDK14 日志系統,slf4j-jdk14
pom.xml?中增加 slf4j-jdk14 依賴包:
jar 包:?slf4j-jdk14-1.7.22.jar
運行程序,即可看到如下圖輸出:
4. Simple 日志系統,slf4j-simple
在?pom.xml?中注釋掉 JDK14 包節點,增加 slf4j-simple 依賴包:
jar 包:?slf4j-simple-1.7.22.jar
運行程序,即可看到如下圖不同輸出:
5. Log4j 日志系統(最常用), slf4j-log4j
依然是在?pom.xml?中注釋掉 Simple 包節點,增加 slf4j-log4j12 依賴包:
jar 包:?slf4j-log4j12-1.7.22.jar、?log4j-1.2.17.jar
Log4j 除了導入 jar 包后,還需要增加一下日志格式的配置文件,我新增了一個log4j.properties的日志配置文件,具體 Log4j 詳細配置我之前在?《log4j 項目中的詳細配置》?這篇博客中寫過。運行程序,即可看到如下圖輸出(輸出格式可自己配置):
6. Logback 日志系統, slf4j-logback
在?pom.xml?中注釋掉 Log4j 包節點,增加 slf4j-logback 依賴包:
jar 包:?logback-core-1.1.9.jar、logback-classic-1.1.9.jar
運行程序,也可看到如下圖日志輸出:
總結一下
看完阿里巴巴的這個開發手冊,的確學到了一些新知識和規范,SLF4J 只是其中一個知識點而已。
說回 SLF4J 這個日志框架,在下一個開源項目或內部類庫中都強烈推薦使用 SLF4J ,它的好處不言而喻,這也是阿里巴巴強制使用的原因所在。希望這篇文章對你的項目中日志系統有所幫助,任何一個任何編程語言的開發者,都應該重視日志的重要性和編碼規范,對你、團隊和未來閱讀你代碼的人都好,相信我,他們肯定會感激你的。
轉載于:https://www.cnblogs.com/studyskill/p/9558084.html
總結
以上是生活随笔為你收集整理的ref:下一个项目为什么要用 SLF4J的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PowerShell Gallery .
- 下一篇: 软件加密方式大全