推薦:花了2萬(wàn)多買(mǎi)的Java架構(gòu)師課程全套候生,現(xiàn)在分享給大家纱皆,從軟件安裝到底層源碼(Java高級(jí)互聯(lián)網(wǎng)架構(gòu)師VIP教程)
TinyLog是Java的簡(jiǎn)單輕量級(jí)日志記錄框架湾趾。我們可以將tinylog與Java,Kotlin派草,Scala和Android應(yīng)用程序一起使用搀缠。
TinyLog日志記錄框架的好處
避免Logger初始化的樣板代碼。tinylog中的Logger類(lèi)是靜態(tài)的近迁,可直接用于記錄消息艺普。
支持其他流行的JVM語(yǔ)言,例如Kotlin和Scala鉴竭。
也支持使用logcat的android應(yīng)用程序歧譬。
tinylog罐子重量輕且尺寸小。tinylog 2.x版本的API jar為48 kb搏存,實(shí)現(xiàn)jar為72 kb瑰步。
可以使用JDBC和DataSource將輸出發(fā)送到控制臺(tái),文件璧眠,數(shù)據(jù)庫(kù)缩焦。
配置文件非常簡(jiǎn)單读虏。對(duì)于基于控制臺(tái)的簡(jiǎn)單日志記錄,我們不需要任何配置文件袁滥。
它是免費(fèi)和開(kāi)源的盖桥。完整的項(xiàng)目代碼托管在GitHub上 。
根據(jù)他們自己的基準(zhǔn)測(cè)試 题翻,它們比Log4J日志記錄框架快得多揩徊。
不依賴(lài)于任何其他API和框架。
支持創(chuàng)建標(biāo)簽以對(duì)日志消息進(jìn)行分類(lèi)嵌赠。這對(duì)于從巨大的日志文件中過(guò)濾日志消息非常有用塑荒。
懶惰日志支持僅在需要日志時(shí)才推遲昂貴的計(jì)算。
TinyLog日志入門(mén)
我們必須在項(xiàng)目類(lèi)路徑中包含以下jar猾普。這些是撰寫(xiě)本教程時(shí)tinylog框架的最新版本袜炕。
tinylog-api-2.0.0-RC1.jar
tinylog-impl-2.0.0-RC1.jar
大多數(shù)時(shí)候本谜,我們使用Maven或Gradle進(jìn)行項(xiàng)目構(gòu)建和依賴(lài)管理初家。
Minelog的Maven依賴(lài)關(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依賴(lài)關(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)用程序。對(duì)于Kotlin乌助,Scala溜在,Android,SLF4J和JCL他托,有單獨(dú)的實(shí)現(xiàn)jar掖肋。您必須根據(jù)您的項(xiàng)目類(lèi)型包括實(shí)施JAR。
**# 使用tinylog記錄器 **
將所需的jar添加到項(xiàng)目類(lèi)路徑后赏参,我們可以使用其Logger類(lèi)編寫(xiě)日志消息志笼。
下圖顯示了我的Eclipse項(xiàng)目結(jié)構(gòu)。
TinyLog Example Project
TinyLog示例項(xiàng)目
這是我使用tinylog Logger進(jìn)行記錄的類(lèi)把篓。
Employee.java :一個(gè)簡(jiǎn)單的模型類(lèi)纫溃,具有一些屬性及其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 :一個(gè)簡(jiǎn)單的服務(wù)類(lèi)韧掩,提供了一種創(chuàng)建Employee對(duì)象的方法紊浩。
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)行我們的簡(jiǎn)單項(xiàng)目的主類(lèi)。
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)行上述程序時(shí)疗锐,它將生成以下輸出坊谁。請(qǐng)注意,我們目前尚未創(chuàng)建tinylog配置文件滑臊。
TinyLog記錄級(jí)別
記錄器支持五個(gè)記錄級(jí)別-跟蹤口芍,調(diào)試,信息雇卷,警告和錯(cuò)誤鬓椭。默認(rèn)值和最低優(yōu)先級(jí)為“跟蹤”虹钮。最高優(yōu)先級(jí)是“錯(cuò)誤”。我們可以在配置文件中設(shè)置日志記錄級(jí)別膘融。設(shè)置級(jí)別和更高優(yōu)先級(jí)的日志消息將被記錄芙粱。
TinyLog配置文件
TinyLog在類(lèi)路徑中尋找tinylog.properties文件,以配置日志記錄選項(xiàng)氧映。我們通常在資源目錄中創(chuàng)建此文件春畔。讓我們創(chuàng)建第一個(gè)tinylog配置文件。
tinylog.properties :
writer = console
writer.format = {date: HH:mm:ss.SSS} {tag} {level}: {message}
當(dāng)我們?cè)俅芜\(yùn)行主程序時(shí)岛都,輸出為:
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
請(qǐng)注意律姨,日志消息遵循配置文件中提到的格式。
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è)置一個(gè)writer標(biāo)簽來(lái)記錄具有該標(biāo)簽的消息,其他消息將被writer忽略烫堤。
writer = console
writer.tag = SYSTEM
通過(guò)將標(biāo)簽設(shè)置為“-”荣赶,我們可以忽略所有標(biāo)簽,僅記錄未加標(biāo)簽的消息鸽斟。
writer = console
writer.tag = -
TinyLog配置拔创,可將消息記錄到日志文件中
這是一個(gè)將消息記錄到tinylog.txt文件中的簡(jiǎn)單示例。
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}
滾動(dòng)文件編寫(xiě)器配置
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接口并將其注冊(cè)為服務(wù)。同樣口注,我們可以實(shí)現(xiàn)org.tinylog.policies.Policy接口來(lái)創(chuàng)建自定義策略并進(jìn)行注冊(cè)变擒。