Spring Boot 2.x基础教程:使用tinylog记录日志
tinylog简介
tinylog,与其他各种tiny开头的东西一样,是一个轻量级的开源日志解决方案。它本身只包含两个JAR文件(一个用于API,另一个用于实现),没有任何外部依赖关系。两个JAR文件的总大小只有178KB。
虽然是一个轻量级级别方案,但我们常用的基本日志管理功能都非常完备,它拥有与其他热门日志框架类似的API设计、多种可配置的日志输出选项、性能方面也是非常的出彩(这是官方给出的Benchmark)。
今天我们就来学习一下,如何在Spring Boot中使用tinylog记录日志。
整合tinylog
通过之前Spring Boot 2.x基础教程:使用log4j2记录日志 一文的学习,回忆一下,整合其他日志框架,是不是可以总结为这样几步:
- 排除Spring Boot默认日志框架依赖
- 引入要使用的日志框架依赖
- 加入新日志框架的配置文件
好了,我们就按这个步骤来实战一下:
第一步:排除Spring Boot默认日志框架依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
第二步:引入tinylog的依赖
<properties>
<tinylog.version>2.4.1</tinylog.version>
</properties>
<dependencies>
<dependency>
<groupId>org.tinylog</groupId>
<artifactId>tinylog-api</artifactId>
<version>${tinylog.version}</version>
</dependency>
<dependency>
<groupId>org.tinylog</groupId>
<artifactId>tinylog-impl</artifactId>
<version>${tinylog.version}</version>
</dependency>
<dependency>
<groupId>org.tinylog</groupId>
<artifactId>slf4j-tinylog</artifactId>
<version>${tinylog.version}</version>
</dependency>
<dependency>
<groupId>org.tinylog</groupId>
<artifactId>jcl-tinylog</artifactId>
<version>${tinylog.version}</version>
</dependency>
<dependency>
<groupId>org.tinylog</groupId>
<artifactId>log4j1.2-api</artifactId>
<version>${tinylog.version}</version>
</dependency>
</dependencies>
测试与验证
到这里,基本整合已经完成了。我们不着急去对tinylog做详细配置,先验证下到这里是否都已经正确。跟之前的日志整合例子一样,写个主类打印下各个级别的日志。
@Slf4j
@SpringBootApplication
public class Chapter83Application {
public static void main(String[] args) {
SpringApplication.run(Chapter83Application.class, args);
log.error("Hello World");
log.warn("Hello World");
log.info("Hello World");
log.debug("Hello World");
log.trace("Hello World");
}
}
这里用了lombok的
@Slf4j,如果还不了解的建议读一下这篇:Lombok:让JAVA代码更优雅
运行一下,从控制台可以看到输出内容如下:

通过debug,我们可以看到此时的log已经是TinylogLogger了

第三步:加入tinylog的配置文件
通过上一步,我们虽然已经完成了整合,但是上面的格式,是你想要的吗?加入配置调整一下!
在resources目录下创建文件:tinylog.properties
加入下面的配置:
writer=console
writer.format={date: HH:mm:ss.SSS} {level}: {message}
重新运行测试,控制台输出是不是好看一些了

更多配置,比如:文件输出、级别控制等这里就不详细说了,大家可以查看官方文档,基本上与其他框架都是类似的,很容易配置。
好了,今天的学习就到这里!如果您学习过程中遇到困难,可以加入我们超高质量的Spring技术交流群 ,参与交流与讨论,更好的学习与进步!更多Spring Boot教程可以点击直达! ,欢迎收藏与转发支持!
代码示例
本文的完整工程可以查看下面仓库中2.x目录下的chapter8-3工程:
- Github:https://github.com/dyc87112/SpringBoot-Learning/
- Gitee:https://gitee.com/didispace/SpringBoot-Learning/
如果您觉得本文不错,欢迎Star支持,您的关注是我坚持的动力!
欢迎关注我的公众号:程序猿DD。第一时间了解前沿行业消息、分享深度技术干货、获取优质学习资源
Spring Boot 2.x基础教程:使用tinylog记录日志的更多相关文章
- Spring Boot 2.x基础教程:使用Swagger2构建强大的API文档
随着前后端分离架构和微服务架构的流行,我们使用Spring Boot来构建RESTful API项目的场景越来越多.通常我们的一个RESTful API就有可能要服务于多个不同的开发人员或开发团队:I ...
- Spring Boot 2.x基础教程:JSR-303实现请求参数校验
请求参数的校验是很多新手开发非常容易犯错,或存在较多改进点的常见场景.比较常见的问题主要表现在以下几个方面: 仅依靠前端框架解决参数校验,缺失服务端的校验.这种情况常见于需要同时开发前后端的时候,虽然 ...
- Spring Boot 2.x基础教程:Swagger接口分类与各元素排序问题详解
之前通过Spring Boot 2.x基础教程:使用Swagger2构建强大的API文档一文,我们学习了如何使用Swagger为Spring Boot项目自动生成API文档,有不少用户留言问了关于文档 ...
- Spring Boot 2.x基础教程:Swagger静态文档的生成
前言 通过之前的两篇关于Swagger入门以及具体使用细节的介绍之后,我们已经能够轻松地为Spring MVC的Web项目自动构建出API文档了.如果您还不熟悉这块,可以先阅读: Spring Boo ...
- Spring Boot 2.x基础教程:使用国产数据库连接池Druid
上一节,我们介绍了Spring Boot在JDBC模块中自动化配置使用的默认数据源HikariCP.接下来这一节,我们将介绍另外一个被广泛应用的开源数据源:Druid. Druid是由阿里巴巴数据库事 ...
- Spring Boot 2.x基础教程:找回启动日志中的请求路径列表
如果您看过之前的Spring Boot 1.x教程,或者自己原本就对Spring Boot有一些经验,或者对Spring MVC很熟悉.那么对于Spring构建的Web应用在启动的时候,都会输出当前应 ...
- Spring Boot 2.x基础教程:使用MyBatis的XML配置方式
上一篇我们介绍了如何在Spring Boot中整合我们国人最常用的MyBatis来实现对关系型数据库的访问.但是上一篇中使用了注解方式来实现,而对于很多MyBatis老用户还是习惯于XML的开发方式, ...
- Spring Boot 2.x基础教程:Spring Data JPA的多数据源配置
上一篇我们介绍了在使用JdbcTemplate来做数据访问时候的多数据源配置实现.接下来我们继续学习如何在使用Spring Data JPA的时候,完成多数据源的配置和使用. 添加多数据源的配置 先在 ...
- Spring Boot 2.x基础教程:事务管理入门
什么是事务? 我们在开发企业应用时,通常业务人员的一个操作实际上是对数据库读写的多步操作的结合.由于数据操作在顺序执行的过程中,任何一步操作都有可能发生异常,异常会导致后续操作无法完成,此时由于业务逻 ...
随机推荐
- java 线程 总结
1.前言 (1)线程的上一级是进程,进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的. (2)线程与进程相似,但线程是一个比进程更小的执行单位,也被称为轻量级进程.一个进程在其执行 ...
- 快速搭建Hadoop-Hive-Zoopkeeper-Sqoop环境进入Sqoop学习环境
原文链接: https://www.toutiao.com/i6771763211927552523/ CDH简单了解 CDH: C:cloudera(公司) D:distribute H:Hadoo ...
- 【Python自动化Excel】pandas处理Excel数据的基本流程
这里所说的pandas并不是大熊猫,而是Python的第三方库.这个库能干嘛呢?它在Python数据分析领域可是无人不知.无人不晓的.可以说是Python世界中的Excel. pandas库处理数据相 ...
- Protobuf使用--go和C#
一.Go安装及使用protobuf工具 以下都是基于Linux系统: 1.安装 A) protobuf 编译工具安装 1.下载 protoBuf: cd $GOPATH/src/ git clone ...
- 内核内存分配器SLAB和SLUB
内核分配器的功能 在操作系统管理的虚拟内存中,用于内存管理的最小单位是页,大多数传统的架构是4KB.由于进程每次申请分配4KB是不现实的,比如分配几个字节或几十个字节,这时需要中间机制来管理页面的微型 ...
- Rancher Fleet使用教程
官方文档: https://fleet.rancher.io/ https://github.com/rancher/fleet 博客截止日期为:20201204 当前官网版本为v0.3.0,但在实践 ...
- 使用PostGIS完成两点间的河流轨迹及流经长度的计算
基础准备工作 1.PostGIS 的安装 在安装PostGIS前首先必须安装PostgreSQL,然后再安装好的Stack Builder中选择安装PostGIS组件.具体安装步骤可参照 PostGI ...
- Unable to open 'free_base.cpp': Unable to read file 'c:\Program Files\Microsoft VS Code\minkernel\crts\ucrt\src\appcrt\heap\free_base.cpp'
问题 vscode编写C++程序,使用microsoft C++ Unable to open 'cvt.cpp': Unable to read file 'c:\Program Files\Mic ...
- javascript 获取<td>标签内的值。
当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model). HTML DOM 模型被构造为对象的树. 通过可编程的对象模型,JavaScript 获得了足够的能力来 ...
- [源码分析] Facebook如何训练超大模型 --- (3)
[源码分析] Facebook如何训练超大模型 --- (3) 目录 [源码分析] Facebook如何训练超大模型 --- (3) 0x00 摘要 0x01 ZeRO-Offload 1.1 设计原 ...