如何配置 Slf4j
一,前言
日常开发中经常需要在控制台输出一些信息,如果这些东西不加管理,那么很容易就被输出信息淹没。幸好,我们有日志相关的库来帮助我们格式化控制台的输出。
这篇文章将介绍如何配置 Slf4j 及其具体的实现,后面会介绍如何配置成彩色的。
二,介绍
之前看一些文章就对 Slf4j 略有所闻,搬砖的时候也稍微用过,只不过没有仔细去看。今天在写代码的时候,想到要用日志工具了,所以直接在 maven 中引入了下面的依赖。
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>2.0.0-alpha1</version>
</dependency>
一运行就报错了。
搜一搜,StackOverflow 上就一个言简意赅的回答。Slf4j 是日志框架的抽象,它提供了接口,不提供实现!具体的实现,用户可以自由选择任何一个日志框架,比如 Log4j, Logback 等等。所以,我们只需要 maven 中引入具体的实现就好了。
SLF4J stands for Simple Logging Facade for Java. It provides a simple abstraction of all the logging frameworks. It enables a user to work with any of the logging frameworks such as Log4j, Logback, JUL (java.util.logging), etc. using single dependency.
这里我选择了 Log4j,直接在 maven 中引入下面的依赖。
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-log4j12 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>2.0.0-alpha1</version>
</dependency>
然后我们在运行一下项目。又是一波报错,下面这个报错说没有指定 appender,所以应该是没有配置文件的缘故。
我们再搜一搜,StackOverflow 还有是有回答。我们只需要在 classpath 中放入 log4j.properties 就好了。
于是乎,我们在 resouces 文件夹下面放入 log4j.properties 就好了。
至于如何配置,我们还需要去具体的看每个实现的配置方式,比如 log4j 要怎么配置,logback 又有怎么配置。这里分享一下我的配置。
log4j.properties,ConversionPattern 我们可以参考这里
log4j.rootLogger=DEBUG, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=log.ColorPatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy/MM/dd HH:mm:ss} [%p] %m%n
此外还需要一个自定义的类文件,放在 log 包下面。颜色是 extends 默认的 PatternLayout,并覆盖 format 方法来实现的,至于颜色怎么选,具体可以看这个
package log;
import org.apache.log4j.Level;
import org.apache.log4j.PatternLayout;
import org.apache.log4j.spi.LoggingEvent;
public class ColorPatternLayout extends PatternLayout {
@Override
public String format(LoggingEvent event) {
Level level = event.getLevel();
String prefix = "\033[33m";
String suffix = "\033[0m";
switch (level.toInt()) {
case Level.TRACE_INT:
prefix = "\033[30m";
break;
case Level.DEBUG_INT:
prefix = "\033[34m";
break;
case Level.INFO_INT:
prefix = "\033[35m";
break;
case Level.WARN_INT:
prefix = "\033[33m";
break;
case Level.ERROR_INT:
prefix = "\033[31m";
break;
}
return prefix + super.format(event) + suffix;
}
}
三,总结
这篇文章简单介绍了如何使用 Slf4j 这个框架,不涉及原理,只是简简单单地讲了讲如何使用。它背后做的事情还挺有意思的,把接口写好,实现就看不同的库。
如何配置 Slf4j的更多相关文章
- Springboot+ mybatis+ mysql配置@Slf4j
spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver # 驱动 name: testDB # 配置名,可以随便写 userna ...
- 在android中使用logback-android日志框架配置 slf4j + logback
为什么使用 slf4j + logback logbak定位于log4j的替代者,logback同样支持slf4j,方便被替换.在Android平台上,我在使用log4中遇到tag混乱的问题.相比lo ...
- 在android中配置 slf4j + log4j 日志记录框架
需求: 在项目开发中,需要记录 操作日志 .起初自己写了个简单的日志记录文本写入到文本的方法,后来随着项目的膨胀,需要考虑更多的操作,开始考虑性能问题. 实现: 考虑使用 slf4j + log4j ...
- 配置Slf4j依赖,桥接各种多个日志组件(排除commons-logging依赖的影响)
由于各个jar组件使用的日志框架不一样,实际项目中可能会引入多个jar,通常使用的日志框架有 commons-logging log4j 若同一个项目引入多个日志组件,那么Slf4j组件会有不能捕捉到 ...
- java配置slf4j日志系统
首先要导入的包: import: 每个类中加入下面,其中 RdiFtpDownload.class 是当前的类名.class 然后就可以打日志了: 配置 log4j.properties log4j. ...
- JAVA中使用log4j及slf4j进行日志输出的方法详解
JAVA中输出日志比较常用的是log4j,这里讲下log4j的配置和使用方法,以及slf4j的使用方法. 一.下载log4j的架包,并导入项目中,如下: 二.创建log4j.properties配置 ...
- 基于Spring Boot的Logback日志轮转配置
在生产环境下,日志是最好的问题调试和跟踪方法,因此日志的地位是十分重要的.我们平时经常使用的log4j,slf4j,logback等等,他们的配置上大同小异.这里就结合Spring Boot配置一下L ...
- SpringBoot 整合 slf4j 日志打印
划水时间,记录一下用到的相关slf4j 日志打印,如何实现配置输出.本地保存log日志文件... 我使用的是SpringBoot框架,slf4j 类库已经包含到了 SpringBoot 框架中,所有, ...
- Spring Cloud Feign 自定义配置(重试、拦截与错误码处理) 实践
Spring Cloud Feign 自定义配置(重试.拦截与错误码处理) 实践 目录 Spring Cloud Feign 自定义配置(重试.拦截与错误码处理) 实践 引子 FeignClient的 ...
随机推荐
- R平方回归平方推导
- CentOS7下常用安装服务软件yum方式的介绍
简介:介绍yum软件包的管理并配置本地yum源 yum安装:基于 C/S 架构,yum安装称之为傻瓜式安装 yum安装优点:方便快捷,不用考虑包依赖,自动下载软件包. yum安装缺点:人为无法干预,无 ...
- ajax上传单个文件
jsp页面 <%@ page language="java" pageEncoding="UTF-8"%> <!DOCTYPE HTML> ...
- GraduateDesign-初试APP编写(去除虚拟按键和禁止状态栏下拉)
为了毕设的要求,需要在Android系统上运行一个app来控制硬件,今天开始这个app的编写. 首先,我们的系统将只运行这个app,也就是我们不需要状态栏,虚拟按键等. 故这里将app设置为全屏模式. ...
- Java 从 Redis中取出的Json字符串 带斜杠的问题解决方案
Java 从 Redis中取出的Json字符串 带斜杠的问题: { "code": 200, "message": "成功", " ...
- STM32串口中断的一些资料
在研究STM32串口接收发送中断的时候找到不少不错的资料,现在备份在这里.以供自己查阅,以及方便其他人. TC ====TXE 顺便预告下最近会写个有关串口处理数据的帖子,从查询和中断方面以及数据处理 ...
- web攻防环境--一句话木马
任务一.基于centos7搭建dvwa web服务靶机 1.在centos7安装LAMP并启动,访问phpinfo页面 也即安装httpd.php.mysql服务. 直接进行yum安装即可,完成后检查 ...
- Mapreduce实例--二次排序
前言部分: 在Map阶段,使用job.setInputFormatClass定义的InputFormat将输入的数据集分割成小数据块splites,同时InputFormat提供一个RecordRed ...
- Hadoop之WordCount
求平均数是MapReduce比较常见的算法,求平均数的算法也比较简单,一种思路是Map端读取数据,在数据输入到Reduce之前先经过shuffle,将map函数输出的key值相同的所有的value值形 ...
- R绘图(2): 离散/分类变量如何画热图/方块图
相信很多人都看到过上面这种方块图,有点像"华夫饼图"的升级版,也有点像"热图"的离散版.我在一些临床多组学的文章里面看到过好几次这种图,用它来展示病人的临床信息 ...