tinylog || Log4j 、Logback 替代品
tinylog2 是什么
tinylog2[1]是為簡(jiǎn)化日志記錄而生的,開源的,支持 Java(1.6+)、Kotlin、Scala、安卓和任何其他 JVM 語言的輕量級(jí)日志框架
安全輕量
顧名思義,tinylog 是一個(gè)輕量級(jí)的日志框架。tinylog 本身僅包含兩個(gè) JAR 文件(一個(gè)用于 API,另一個(gè)用于實(shí)現(xiàn)),沒有任何外部依賴項(xiàng)(因此不會(huì)受到近期 log4j2 的漏洞影響)。兩個(gè) JAR 文件的總大小僅為 178 KB。
tinylog2 使用
Logger 輸出
tinylog 有一個(gè)靜態(tài)記錄器類。因此,我們可以采用以下代碼優(yōu)雅記錄日志:
import?org.tinylog.Logger;
public?class?Application?{
????public?static?void?main(String[]?args)?{
????????Logger.info("Hello?World!");
????}
}
slf4j 適配
當(dāng)然,只需要借助slf4j-tinylog[2],我們就可以繼續(xù)使用 slf4j 門面而無需改變我們的代碼,完成替換 log4j、logback 等。
<dependency>
????<groupId>org.tinyloggroupId>
????<artifactId>slf4j-tinylogartifactId>
????<version>2.4.1version>
dependency>
<dependency>
????<groupId>org.tinyloggroupId>
????<artifactId>tinylog-implartifactId>
????<version>2.4.1version>
dependency>

多樣化的輸出選項(xiàng)
tinylog2 適配了多種日志輸出方式。日志條目可以寫入控制臺(tái)、數(shù)據(jù)庫表、文件和 Android 的 logcat。文件輸出支持類似 logback 的滾動(dòng)日志,支持多實(shí)例共享配置文件。
可配置
tinylog2 傳統(tǒng)的 properties 文件進(jìn)行配置,所有的配置項(xiàng)請(qǐng)參考官網(wǎng)[3]
writer = file
writer.file = application.log
writer.format = {class}.{method}() {message}
level = info
當(dāng)然,借助tinylog2-extra-stuff[4]項(xiàng)目,我們可以采用 yaml 或者 json 文件對(duì)其進(jìn)行配置。
性能說明
tinylog2 針對(duì)日志條目的快速輸出進(jìn)行了優(yōu)化,并且明顯快于其他日志記錄框架,如基準(zhǔn)測(cè)試[5]所示。尤其是進(jìn)行堆棧跟蹤信息的輸出(例如發(fā)出日志條目的方法名稱或行號(hào))時(shí),tinylog2 顯著快于其他所有日志框架 。

開源
同 Java 世界的許多其他日志框架一樣,tinylog2 也是一個(gè)基于 Apache License V2 協(xié)議開源的項(xiàng)目。其代碼托管在github[6]上,可以免費(fèi)商用。
參考資料
tinylog2: https://tinylog.org/v2
[2]slf4j-tinylog: https://github.com/tinylog-org/tinylog/tree/v2.5/slf4j-tinylog
[3]tinylog2配置項(xiàng): https://tinylog.org/v2/configuration
[4]tinylog2-extra-stuff: https://github.com/Git5000/tinylog_extra_stuff
[5]基準(zhǔn)測(cè)試數(shù)據(jù): https://tinylog.org/v2/benchmark
[6]github: https://github.com/tinylog-org/tinylog
