关于java:换掉-Log4j2tinylog-横空出世无需定义-logger-变量简单轻量性能爆炸

32次阅读

共计 2647 个字符,预计需要花费 7 分钟才能阅读完成。

背景

前段时间,日志框架各种爆雷,包含:Log4j 1.x, Log4j 2.x, Logback 等都有爆雷,简直是团灭:

Log4j 2.3.1 公布!又是什么鬼??

Logback 也爆雷了,惊爆了。。。

Log4j, Logback 都是支流的日志框架,性能也十分弱小,不仅仅是日志记录,所以,性能多,天然也会带来更多的破绽。。

其实咱们应用日志框架,最多的还是记录系统日志,其余的乌七八糟的性能用的非常少,所以,如果你想寻求一款简略的日志记录框架,能够试试这款轻量级的开源日志框架——tinylog

tinylog

根本介绍

官方网站:

https://tinylog.org/

开源地址:

https://github.com/tinylog-or…

见名知义,tinylog 即:迷你日志 ,它的次要指标就是 简化日志记录操作

反对的语言:

  • Java(Java 6+)
  • Kotlin
  • Scala
  • … 等其余 JVM 系语言(包含 Android)

反对的日志级别:

  • TRACE
  • DEBUG
  • INFO
  • WARN
  • ERROR
  • OFF(禁用日志输入)

轻量级

tinylog 主打轻量级,那么,tinylog 到底有多轻量??

栈长体验了一翻,总结了以下三点:

  • 仅有两个 jar 包,一个是 API,一个是实现,无任何其余依赖;
  • 两个 jar 包总大小仅为 178 KB
  • 无需全局动态变量,开箱即用;

来看 tinylog 的应用形式:

import org.tinylog.Logger; 

public class Application {public static void main(String[] args) {Logger.info("欢送关注公众号:Java 技术栈!");    
    }
}

这里就能够看到 tinylog 的劣势了,不须要再增加像 logger 这样的全局动态变量了:

private final Logger logger = LoggerFactory.getLogger(this.getClass());

能够间接应用 Logger.info 等静态方法,也还能应用 {} 参数占位符,不能太不便了!

另外,大家能够关注公众号 Java 技术栈,在菜单栏查看栈长分享的往期系列 Java 精选好用技术及工具等。

日志性能

tinylog 对日志输入做了优化,日志输入性能更是非常了得,最快的时候甚至比 Log4j2 和 Logback 快数倍!

比方应用以下咱们罕用的格局输入日志:

{date:yyyy-MM-dd HH:mm:ss} – {thread} – {class}.{method}() – {level}: {message}

tinylog 此时的性能真的吊打其余日志框架!

更多基准测试能够参考官网的报告:

https://tinylog.org/v2/benchm…

这么牛逼!大家想不想试试呢?

集成实战

1)引入依赖

咱们只须要引入 tinylog-impl 即可:

<dependency>
    <groupId>org.tinylog</groupId>
    <artifactId>tinylog-impl</artifactId>
    <version>${tinylog.version}</version>
</dependency>

此时,其依赖的 API 包也会一起蕴含进来:

2)实战示例

栈长应用的是 Spring Boot,加一个 CommandLineRunner,能够间接让系统启动的时候输入日志:

@Bean
public CommandLineRunner commandLineRunner() {return (args) -> {Logger.info("hello, tinylog!");
    };
}

CommandLineRunner 不分明的能够关注公众号 Java 技术栈,在菜单栏浏览栈长写的系列 Spring Boot 教程。

不必在每个类中写 logger 全局变量,真爽。。

本文实战源代码完整版曾经上传:

https://github.com/javastacks…

3)启动验证

当初咱们来启动零碎:

如图,零碎在启动后输入了咱们的日志。

4、更多配置

如果你想自定义日志配置,能够在资源目录下创立一个日志配置文件:tinylog.properties

参考示例如下:

level            = INFO

writer1          = console
writer1.format   = {date: HH:mm:ss.SSS} {class}.{method}() {level}: {message}

writer2          = rolling file
writer2.file     = logs/{date: yyyy-MM-dd}/log_{count}.log
writer2.policies = startup, daily: 02:00
writer2.format   = {date: HH:mm:ss} [{thread}] {level}: {message}: {message}

此时日志级别为:info,创立了两个 writer,一个输入到控制台,一个写入文件,并每天按时进行日志切割归档。

更多的日志配置能够参考官网文档:

https://tinylog.org/v2/config…

总结

tinylog 于 2014 年开源,到目前曾经有快 8 个年头了,版本也是从 1.x 到现在的 2.x,最新版本为:2.4.1,并且 v2.5 也在路上了,从官网仓库看,更新频繁还挺高。

如果你想寻求一款简略的日志框架,tinylog 足够轻量,应用简略,性能牛逼,也是一个不错的抉择。

惋惜的是,tinylog 只是款小众日志框架,算不上支流,国内材料也还较少,所以,如果不是深度应用,倒是能够尝试,否则可能还有不少学习老本,大家还是要权衡利弊的。

本文实战源代码完整版曾经上传:

https://github.com/javastacks…

欢送 Star 学习,前面 Spring Boot 示例都会在这下面提供!

在座的各位有用 tinylog 的么?欢送留言分享~

最初,如果你想关注和学习最新、最支流的 Java 技术,能够继续关注公众号 Java 技术栈,公众号第一工夫推送。

版权申明!!!

本文系公众号 “Java 技术栈 ” 原创,转载、援用本文内容请注明出处,剽窃、洗稿一律投诉侵权,后果自负,并保留追究其法律责任的权力。

近期热文举荐:

1.1,000+ 道 Java 面试题及答案整顿(2022 最新版)

2. 劲爆!Java 协程要来了。。。

3.Spring Boot 2.x 教程,太全了!

4.Spring Boot 2.6 正式公布,一大波新个性。。

5.《Java 开发手册(嵩山版)》最新公布,速速下载!

感觉不错,别忘了顺手点赞 + 转发哦!

正文完
 0