背景
前段時間,日志框架各種爆雷,包括:Log4j 1.x, Log4j 2.x, Logback 等都有爆雷,幾乎是團滅:
Log4j 2.3.1 發布!又是什么鬼??
Logback 也爆雷了,驚爆了,,,
Log4j, Logback 都是主流的日志框架,功能也非常強大,不僅僅是日志記錄,所以,功能多,自然也會帶來更多的漏洞,,
其實我們使用日志框架,最多的還是記錄系統日志,其他的亂七八糟的功能用的非常少,所以,如果你想尋求一款簡單的日志記錄框架,可以試試這款輕量級的開源日志框架——tinylog,
tinylog
基本介紹
官方網站:
https://tinylog.org/
開源地址:
https://github.com/tinylog-org/tinylog
見名知義,tinylog 即:迷你日志,它的主要目標就是簡化日志記錄操作,
支持的語言:
- Java(Java 6+)
- Kotlin
- Scala
- ...等其他 JVM 系語言(包括 Android)
支持的日志級別:
- TRACE
- DEBUG
- INFO
- WARN
- ERROR
- OFF(禁用日志輸出)
輕量級
tinylog 主打輕量級,那么,tinylog 到底有多輕量??
堆疊長體驗了一翻,總結了以下三點:
- 僅有兩個 jar 包,一個是 API,一個是實作,無任何其他依賴;
- 兩個 jar 包總大小僅為 178 KB;
- 無需全域靜態變數,開箱即用;
來看 tinylog 的使用方式:
import org.tinylog.Logger;
public class Application {
public static void main(String[] args) {
Logger.info("歡迎關注公眾號:Java技術堆疊!");
}
}
這里就可以看到 tinylog 的優勢了,不需要再添加像 logger 這樣的全域靜態變數了:
private final Logger logger = LoggerFactory.getLogger(this.getClass());
可以直接使用 Logger.info 等靜態方法,也還能使用 {} 引數占位符,不能太方便了!
另外,大家可以關注公眾號Java技術堆疊,在選單欄查看堆疊長分享的往期系列 Java 精選好用技術及工具等,
日志性能
tinylog 對日志輸出做了優化,日志輸出性能更是十分了得,最快的時候甚至比 Log4j2 和 Logback 快數倍!
比如使用以下我們常用的格式輸出日志:
{date:yyyy-MM-dd HH:mm:ss} - {thread} - {class}.{method}() - {level}: {message}

tinylog 此時的性能真的吊打其他日志框架!
更多基準測驗可以參考官方的報告:
https://tinylog.org/v2/benchmark/
這么牛逼!大家想不想試試呢?
集成實戰
1)引入依賴
我們只需要引入 tinylog-impl 即可:
<dependency>
<groupId>org.tinylog</groupId>
<artifactId>tinylog-impl</artifactId>
<version>${tinylog.version}</version>
</dependency>
此時,其依賴的 API 包也會一起包含進來:

2)實戰示例
堆疊長使用的是 Spring Boot,加一個 CommandLineRunner,可以直接讓系統啟動的時候輸出日志:
@Bean
public CommandLineRunner commandLineRunner() {
return (args) -> {
Logger.info("hello, tinylog!");
};
}
CommandLineRunner 不清楚的可以關注公眾號Java技術堆疊,在選單欄閱讀堆疊長寫的系列 Spring Boot 教程,
不用在每個類中寫 logger 全域變數,真爽,,
本文實戰源代碼完整版已經上傳:
https://github.com/javastacks/spring-boot-best-practice
3)啟動驗證
現在我們來啟動系統:

如圖,系統在啟動后輸出了我們的日志,
4、更多配置
如果你想自定義日志配置,可以在資源目錄下創建一個日志組態檔:tinylog.properties,
參考示例如下:
level = INFO
writer1 = console
writer1.format = {date: HH:mm:ss.SSS} {class}.{method}() {level}: {message}
writer2 = rolling file
writer2.file = logs/{date: yyyy-MM-dd}/log_{count}.log
writer2.policies = startup, daily: 02:00
writer2.format = {date: HH:mm:ss} [{thread}] {level}: {message}: {message}
此時日志級別為:info,創建了兩個 writer,一個輸出到控制臺,一個寫入檔案,并每天按時進行日志切割歸檔,
更多的日志配置可以參考官方檔案:
https://tinylog.org/v2/configuration/
總結
tinylog 于 2014 年開源,到目前已經有快 8 個年頭了,版本也是從 1.x 到如今的 2.x,最新版本為:2.4.1,并且 v2.5 也在路上了,從官方倉庫看,更新頻繁還挺高,
如果你想尋求一款簡單的日志框架,tinylog 足夠輕量,使用簡單,性能牛逼,也是一個不錯的選擇,
可惜的是,tinylog 只是款小眾日志框架,算不上主流,國內資料也還較少,所以,如果不是深度使用,倒是可以嘗試,否則可能還有不少學習成本,大家還是要權衡利弊的,
本文實戰源代碼完整版已經上傳:
https://github.com/javastacks/spring-boot-best-practice
歡迎 Star 學習,后面 Spring Boot 示例都會在這上面提供!
在座的各位有用 tinylog 的么?歡迎留言分享~
最后,如果你想關注和學習最新、最主流的 Java 技術,可以持續關注公眾號Java技術堆疊,公眾號第一時間推送,
著作權宣告!!!
本文系公眾號 "Java技術堆疊" 原創,轉載、參考本文內容請注明出處,抄襲、洗稿一律投訴侵權,后果自負,并保留追究其法律責任的權利,
近期熱文推薦:
1.1,000+ 道 Java面試題及答案整理(2022最新版)
2.勁爆!Java 協程要來了,,,
3.Spring Boot 2.x 教程,太全了!
4.Spring Boot 2.6 正式發布,一大波新特性,,
5.《Java開發手冊(嵩山版)》最新發布,速速下載!
覺得不錯,別忘了隨手點贊+轉發哦!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/415220.html
標籤:Java
上一篇:springboot 跨域配置類
下一篇:通俗講解分布式鎖:場景和使用方法
