tinylog || Log4j 、Logback 替代品
tinylog2 是什么
tinylog2[1]是为简化日志记录而生的,开源的,支持 Java(1.6+)、Kotlin、Scala、安卓和任何其他 JVM 语言的轻量级日志框架
安全轻量
顾名思义,tinylog 是一个轻量级的日志框架。tinylog 本身仅包含两个 JAR 文件(一个用于 API,另一个用于实现),没有任何外部依赖项(因此不会受到近期 log4j2 的漏洞影响)。两个 JAR 文件的总大小仅为 178 KB。
tinylog2 使用
Logger 输出
tinylog 有一个静态记录器类。因此,我们可以采用以下代码优雅记录日志:
import org.tinylog.Logger;
public class Application {
public static void main(String[] args) {
Logger.info("Hello World!");
}
}
slf4j 适配
当然,只需要借助slf4j-tinylog[2],我们就可以继续使用 slf4j 门面而无需改变我们的代码,完成替换 log4j、logback 等。
<dependency>
<groupId>org.tinyloggroupId>
<artifactId>slf4j-tinylogartifactId>
<version>2.4.1version>
dependency>
<dependency>
<groupId>org.tinyloggroupId>
<artifactId>tinylog-implartifactId>
<version>2.4.1version>
dependency>
多样化的输出选项
tinylog2 适配了多种日志输出方式。日志条目可以写入控制台、数据库表、文件和 Android 的 logcat。文件输出支持类似 logback 的滚动日志,支持多实例共享配置文件。
可配置
tinylog2 传统的 properties 文件进行配置,所有的配置项请参考官网[3]
writer = file
writer.file = application.log
writer.format = {class}.{method}() {message}
level = info
当然,借助tinylog2-extra-stuff[4]项目,我们可以采用 yaml 或者 json 文件对其进行配置。
性能说明
tinylog2 针对日志条目的快速输出进行了优化,并且明显快于其他日志记录框架,如基准测试[5]所示。尤其是进行堆栈跟踪信息的输出(例如发出日志条目的方法名称或行号)时,tinylog2 显著快于其他所有日志框架 。
开源
同 Java 世界的许多其他日志框架一样,tinylog2 也是一个基于 Apache License V2 协议开源的项目。其代码托管在github[6]上,可以免费商用。
参考资料
tinylog2: https://tinylog.org/v2
[2]slf4j-tinylog: https://github.com/tinylog-org/tinylog/tree/v2.5/slf4j-tinylog
[3]tinylog2配置项: https://tinylog.org/v2/configuration
[4]tinylog2-extra-stuff: https://github.com/Git5000/tinylog_extra_stuff
[5]基准测试数据: https://tinylog.org/v2/benchmark
[6]github: https://github.com/tinylog-org/tinylog