推薦:花了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)行注冊。