tinylog || Log4j 、Logback 替代品

程序员的成长之路

共 4470字,需浏览 9分钟

 ·

2022-01-01 19:42

程序员的成长之路
互联网/程序员/技术/资料共享 
关注


阅读本文大概需要 4 分钟。

来自:blog.csdn.net/cunchi4221/article/details/107477602

TinyLog是Java的简单轻量级日志记录框架。我们可以将tinylog与Java,Kotlin,Scala和Android应用程序一起使用。


# TinyLog日志记录框架的好处

避免Logger初始化的样板代码。tinylog中的Logger类是静态的,可直接用于记录消息。


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

也支持使用logcat的android应用程序。

tinylog罐子重量轻且尺寸小。tinylog 2.x版本的API jar为48 kb,实现jar为72 kb。


可以使用JDBC和DataSource将输出发送到控制台,文件,数据库。


配置文件非常简单。对于基于控制台的简单日志记录,我们不需要任何配置文件。

它是免费和开源的。完整的项目代码托管在GitHub上 。

根据他们自己的基准测试 ,它们比Log4J日志记录框架快得多。


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

支持创建标签以对日志消息进行分类。这对于从巨大的日志文件中过滤日志消息非常有用。

懒惰日志支持仅在需要日志时才推迟昂贵的计算。


# TinyLog日志入门

我们必须在项目类路径中包含以下jar。这些是撰写本教程时tinylog框架的最新版本。

  • tinylog-api-2.0.0-RC1.jar


  • tinylog-impl-2.0.0-RC1.jar


大多数时候,我们使用Maven或Gradle进行项目构建和依赖管理。

Minelog的Maven依赖关系 

<dependency><groupId>org.tinyloggroupId><artifactId>tinylog-apiartifactId><version>2.0.0-RC1version>dependency><dependency><groupId>org.tinyloggroupId><artifactId>tinylog-implartifactId><version>2.0.0-RC1version>dependency>

tinylog的Gradle依赖关系

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

上面的实现jar适用于基于JVM的应用程序。对于Kotlin,Scala,Android,SLF4J和JCL,有单独的实现jar。您必须根据您的项目类型包括实施JAR。


# 使用tinylog记录器 


将所需的jar添加到项目类路径后,我们可以使用其Logger类编写日志消息。

下图显示了我的Eclipse项目结构。
TinyLog Example Project
TinyLog示例项目

这是我使用tinylog Logger进行记录的类。

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 :一个简单的服务类,提供了一种创建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 :运行我们的简单项目的主类。

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");}}

当我们运行上述程序时,它将生成以下输出。请注意,我们目前尚未创建tinylog配置文件。





# TinyLog记录级别

记录器支持五个记录级别-跟踪,调试,信息,警告和错误。默认值和最低优先级为“跟踪”。最高优先级是“错误”。我们可以在配置文件中设置日志记录级别。设置级别和更高优先级的日志消息将被记录。

# TinyLog配置文件

TinyLog在类路径中寻找tinylog.properties文件,以配置日志记录选项。我们通常在资源目录中创建此文件。让我们创建第一个tinylog配置文件。

tinylog.properties :
writer = consolewriter.format = {date: HH:mm:ss.SSS} {tag} {level}: {message}

当我们再次运行主程序时,输出为:
12:22:47.073 DEBUG: Program Started12:22:47.076 INFO: Creating Employee with ID = 10 and Name = Pankaj12:22:47.076 INFO: Setting employee id 1012:22:47.077 INFO: Setting employee name Pankaj12:22:47.077 DEBUG: Returning employee id 10Employee ID = 1012:22:47.077 DEBUG: Returning employee name PankajEmployee Name = Pankaj12:22:47.077 DEBUG: Program Finished

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

# TinyLog标签

我们可以使用以下代码在代码中设置Logger标签。
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

我们可以设置一个writer标签来记录具有该标签的消息,其他消息将被writer忽略。
writer = consolewriter.tag = SYSTEM

通过将标签设置为“-”,我们可以忽略所有标签,仅记录未加标签的消息。

writer = consolewriter.tag = -

# TinyLog配置,可将消息记录到日志文件中 

这是一个将消息记录到tinylog.txt文件中的简单示例。
writer = filewriter.file = tinylog.txtwriter.level = infowriter.format = {date: HH:mm:ss.SSS} {tag} {level}: {message}

TinyLog也支持读取环境变量。例如,我们可以使用以下格式指定要在主目录中生成的日志文件。
writer.file = ${HOME}/tinylog.txt

我们还可以使用#{key}格式在TinyLog配置中读取系统属性。
writer.format = #{user.name}: {message}

# 滚动文件编写器配置

writer = rolling filewriter.file = tinylog{count}.txtwriter.level = infowriter.format = {date: HH:mm:ss.SSS} {tag} {level}: {message}

# 扩展TingLog

TinyLog是可扩展的。我们可以实现org.tinylog.writers.Writer接口并将其注册为服务。同样,我们可以实现org.tinylog.policies.Policy接口来创建自定义策略并进行注册。

推荐阅读:

Spring Boot 监听 Redis Key 失效事件实现定时任务

用不惯VMware?试试这款更轻量级的虚拟机!

互联网初中高级大厂面试题(9个G)

内容包含Java基础、JavaWeb、MySQL性能优化、JVM、锁、百万并发、消息队列、高性能缓存、反射、Spring全家桶原理、微服务、Zookeeper、数据结构、限流熔断降级......等技术栈!

戳阅读原文领取!                                       朕已阅 

浏览 32
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报