tinylog || Log4j 、Logback 替代品

推薦:花了2萬多買的Java架構(gòu)師課程全套,現(xiàn)在分享給大家,從軟件安裝到底層源碼(Java高級互聯(lián)網(wǎng)架構(gòu)師VIP教程)

TinyLog是Java的簡單輕量級日志記錄框架。我們可以將tinylog與Java,Kotlin,Scala和Android應(yīng)用程序一起使用。

TinyLog日志記錄框架的好處

避免Logger初始化的樣板代碼。tinylog中的Logger類是靜態(tài)的,可直接用于記錄消息。

支持其他流行的JVM語言,例如Kotlin和Scala。

也支持使用logcat的android應(yīng)用程序。

tinylog罐子重量輕且尺寸小。tinylog 2.x版本的API jar為48 kb,實(shí)現(xiàn)jar為72 kb。

可以使用JDBC和DataSource將輸出發(fā)送到控制臺,文件,數(shù)據(jù)庫。

配置文件非常簡單。對于基于控制臺的簡單日志記錄,我們不需要任何配置文件。

它是免費(fèi)和開源的。完整的項(xiàng)目代碼托管在GitHub上 。

根據(jù)他們自己的基準(zhǔn)測試 ,它們比Log4J日志記錄框架快得多。

不依賴于任何其他API和框架。

支持創(chuàng)建標(biāo)簽以對日志消息進(jìn)行分類。這對于從巨大的日志文件中過濾日志消息非常有用。

懶惰日志支持僅在需要日志時才推遲昂貴的計算。

TinyLog日志入門

我們必須在項(xiàng)目類路徑中包含以下jar。這些是撰寫本教程時tinylog框架的最新版本。

  • tinylog-api-2.0.0-RC1.jar

  • tinylog-impl-2.0.0-RC1.jar

大多數(shù)時候,我們使用Maven或Gradle進(jìn)行項(xiàng)目構(gòu)建和依賴管理。

Minelog的Maven依賴關(guān)系

<dependency>
<groupId>org.tinylog</groupId>
<artifactId>tinylog-api</artifactId>
<version>2.0.0-RC1</version>
</dependency>
<dependency>
<groupId>org.tinylog</groupId>
<artifactId>tinylog-impl</artifactId>
<version>2.0.0-RC1</version>
</dependency>

tinylog的Gradle依賴關(guān)系

implementation 'org.tinylog:tinylog-api:2.0.0-RC1'
implementation 'org.tinylog:tinylog-impl:2.0.0-RC1'

上面的實(shí)現(xiàn)jar適用于基于JVM的應(yīng)用程序。對于Kotlin,Scala,Android,SLF4J和JCL,有單獨(dú)的實(shí)現(xiàn)jar。您必須根據(jù)您的項(xiàng)目類型包括實(shí)施JAR。

**# 使用tinylog記錄器 **

將所需的jar添加到項(xiàng)目類路徑后,我們可以使用其Logger類編寫日志消息。

下圖顯示了我的Eclipse項(xiàng)目結(jié)構(gòu)。

TinyLog Example Project

TinyLog示例項(xiàng)目

這是我使用tinylog Logger進(jìn)行記錄的類。

Employee.java :一個簡單的模型類,具有一些屬性及其getter-setter方法 。

package com.journaldev.tinylog;

import org.tinylog.Logger;
 
public class Employee {
 
private int id;
private String name;
 
public String getName() {
Logger.debug("Returning employee name " + this.name);
return name;
}
 
public void setName(String name) {
Logger.info("Setting employee name " + name);
this.name = name;
}
 
public int getId() {
Logger.debug("Returning employee id " + this.id);
return id;
}
 
public void setId(int id) {
Logger.info("Setting employee id " + id);
this.id = id;
}
}

EmployeeService.java :一個簡單的服務(wù)類,提供了一種創(chuàng)建Employee對象的方法。

package com.journaldev.tinylog;
 
import org.tinylog.Logger;
 
public class EmployeeService {
 
public Employee createEmployee(int i, String n) {
Logger.info("Creating Employee with ID = " + i + " and Name = " + n);
Employee emp = new Employee();
emp.setId(i);
emp.setName(n);
return emp;
}
  
}

EmployeeMain.java :運(yùn)行我們的簡單項(xiàng)目的主類。

package com.journaldev.tinylog;
 
import org.tinylog.Logger;
 
public class EmployeeMain {
 
public static void main(String[] args) {    
Logger.debug("Program Started");
    
EmployeeService empService = new EmployeeService();
 
Employee emp = empService.createEmployee(10, "Pankaj");
 
System.out.println("Employee ID = " + emp.getId());
System.out.println("Employee Name = " + emp.getName());
 
Logger.debug("Program Finished");
}
}

當(dāng)我們運(yùn)行上述程序時,它將生成以下輸出。請注意,我們目前尚未創(chuàng)建tinylog配置文件。

TinyLog記錄級別

記錄器支持五個記錄級別-跟蹤,調(diào)試,信息,警告和錯誤。默認(rèn)值和最低優(yōu)先級為“跟蹤”。最高優(yōu)先級是“錯誤”。我們可以在配置文件中設(shè)置日志記錄級別。設(shè)置級別和更高優(yōu)先級的日志消息將被記錄。

TinyLog配置文件

TinyLog在類路徑中尋找tinylog.properties文件,以配置日志記錄選項(xiàng)。我們通常在資源目錄中創(chuàng)建此文件。讓我們創(chuàng)建第一個tinylog配置文件。

tinylog.properties :

writer        = console
writer.format = {date: HH:mm:ss.SSS} {tag} {level}: {message}

當(dāng)我們再次運(yùn)行主程序時,輸出為:

12:22:47.073  DEBUG: Program Started
12:22:47.076  INFO: Creating Employee with ID = 10 and Name = Pankaj
12:22:47.076  INFO: Setting employee id 10
12:22:47.077  INFO: Setting employee name Pankaj
12:22:47.077  DEBUG: Returning employee id 10
Employee ID = 10
12:22:47.077  DEBUG: Returning employee name Pankaj
Employee Name = Pankaj
12:22:47.077  DEBUG: Program Finished

請注意,日志消息遵循配置文件中提到的格式。

TinyLog標(biāo)簽

我們可以使用以下代碼在代碼中設(shè)置Logger標(biāo)簽。

Logger.tag("MAIN").debug("Program Started");
 
Logger.tag("MAIN").debug("Program Finished");

更新后的日志消息將包含以下幾行。

12:26:12.831 MAIN DEBUG: Program Started
...
12:26:12.835 MAIN DEBUG: Program Finished

我們可以設(shè)置一個writer標(biāo)簽來記錄具有該標(biāo)簽的消息,其他消息將被writer忽略。

writer     = console
writer.tag = SYSTEM

通過將標(biāo)簽設(shè)置為“-”,我們可以忽略所有標(biāo)簽,僅記錄未加標(biāo)簽的消息。

writer     = console
writer.tag = -

TinyLog配置,可將消息記錄到日志文件中

這是一個將消息記錄到tinylog.txt文件中的簡單示例。

writer       =  file
writer.file  = tinylog.txt
writer.level = info
writer.format = {date: HH:mm:ss.SSS} {tag} {level}: {message}

TinyLog也支持讀取環(huán)境變量。例如,我們可以使用以下格式指定要在主目錄中生成的日志文件。

writer.file = ${HOME}/tinylog.txt

我們還可以使用#{key}格式在TinyLog配置中讀取系統(tǒng)屬性。

writer.format = #{user.name}: {message}

滾動文件編寫器配置

writer       = rolling file
writer.file  = tinylog{count}.txt
writer.level = info
writer.format = {date: HH:mm:ss.SSS} {tag} {level}: {message}

擴(kuò)展TingLog

TinyLog是可擴(kuò)展的。我們可以實(shí)現(xiàn)org.tinylog.writers.Writer接口并將其注冊為服務(wù)。同樣,我們可以實(shí)現(xiàn)org.tinylog.policies.Policy接口來創(chuàng)建自定義策略并進(jìn)行注冊。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容