一,前言

日常开发中经常需要在控制台输出一些信息,如果这些东西不加管理,那么很容易就被输出信息淹没。幸好,我们有日志相关的库来帮助我们格式化控制台的输出。

这篇文章将介绍如何配置 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的更多相关文章

  1. Springboot+ mybatis+ mysql配置@Slf4j

    spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver # 驱动 name: testDB # 配置名,可以随便写 userna ...

  2. 在android中使用logback-android日志框架配置 slf4j + logback

    为什么使用 slf4j + logback logbak定位于log4j的替代者,logback同样支持slf4j,方便被替换.在Android平台上,我在使用log4中遇到tag混乱的问题.相比lo ...

  3. 在android中配置 slf4j + log4j 日志记录框架

    需求: 在项目开发中,需要记录 操作日志 .起初自己写了个简单的日志记录文本写入到文本的方法,后来随着项目的膨胀,需要考虑更多的操作,开始考虑性能问题. 实现: 考虑使用 slf4j + log4j ...

  4. 配置Slf4j依赖,桥接各种多个日志组件(排除commons-logging依赖的影响)

    由于各个jar组件使用的日志框架不一样,实际项目中可能会引入多个jar,通常使用的日志框架有 commons-logging log4j 若同一个项目引入多个日志组件,那么Slf4j组件会有不能捕捉到 ...

  5. java配置slf4j日志系统

    首先要导入的包: import: 每个类中加入下面,其中 RdiFtpDownload.class 是当前的类名.class 然后就可以打日志了: 配置 log4j.properties log4j. ...

  6. JAVA中使用log4j及slf4j进行日志输出的方法详解

    JAVA中输出日志比较常用的是log4j,这里讲下log4j的配置和使用方法,以及slf4j的使用方法.  一.下载log4j的架包,并导入项目中,如下: 二.创建log4j.properties配置 ...

  7. 基于Spring Boot的Logback日志轮转配置

    在生产环境下,日志是最好的问题调试和跟踪方法,因此日志的地位是十分重要的.我们平时经常使用的log4j,slf4j,logback等等,他们的配置上大同小异.这里就结合Spring Boot配置一下L ...

  8. SpringBoot 整合 slf4j 日志打印

    划水时间,记录一下用到的相关slf4j 日志打印,如何实现配置输出.本地保存log日志文件... 我使用的是SpringBoot框架,slf4j 类库已经包含到了 SpringBoot 框架中,所有, ...

  9. Spring Cloud Feign 自定义配置(重试、拦截与错误码处理) 实践

    Spring Cloud Feign 自定义配置(重试.拦截与错误码处理) 实践 目录 Spring Cloud Feign 自定义配置(重试.拦截与错误码处理) 实践 引子 FeignClient的 ...

随机推荐

  1. Java8 - Stream流:让你的集合变得更简单!

    前段时间,在公司熟悉新代码,发现好多都是新代码,全是 Java8语法,之前没有了解过,一直在专研技术的深度,却忘了最初的语法,所以,今天总结下Stream ,算是一份自己理解,不会很深入,就讲讲常用的 ...

  2. Python进阶学习_连接操作Redis数据库

    安装导入第三方模块Redis pip3 install redis import redis 操作String类型 """ redis 基本命令 String set(n ...

  3. Java 细粒度锁续篇

    在上篇文章中大概介绍了 Java 中细粒度锁的几种实现方式,并且针对每种方式都做了优缺点说明,在使用的时候就需要根据业务需求选择更合适的一种.上篇文章中的最后一种弱引用锁的实现方式,我在里面也说了其实 ...

  4. Excel-RANK函数排名与拓展

    问题场景 需求不同根据总分出排名(从大到小100分.100分.99分.98分.97分),排名需求: 第一种排名:第1名,第2名,第3名,第4名,第5名: 第二种排名:第1名,第1名,第3名,第4名,第 ...

  5. ConstraintLayout 学习笔记

    如何阅读 xml 属性 与 Relativelayout 不同,ConstrainLayout 的属性需要同时说明需要怎么操作自己与目标控件,例如:layout_constraintLeft_toLe ...

  6. IntelliJ IDEA错误: 源值1.5已过时,将在未来所有版本中删除

    参考:http://www.jianshu.com/p/451271c4de11

  7. FSMC全称“静态存储器控制器”。

    FSMC全称"静态存储器控制器". 使用FSMC控制器后,可以把FSMC提供的FSMC_A[25:0]作为地址线,而把FSMC提供的FSMC_D[15:0]作为数据总线. (1)当 ...

  8. SpringBoot自动加载路由前缀

    @RequestMapping() 将controller注册到容器中时需要加入路由地址,如果项目层数较深,地址会非常的长,并且有很多一样的路由前缀,每写一个controller都要重复一遍非常的麻烦 ...

  9. WebApplicationContext

    在Web应用中,我们会用到WebApplicationContext  用它来保存上下文信息 那么它set到ServletContext的过程是怎么样呢 1)通过WEB.XML中监听类 p.p1 { ...

  10. hadoop fs -stat 查看文件状态

    转载来自:https://blog.csdn.net/knowledgeaaa/article/details/24394287 当向HDFS上写文件时,可以通过设置dfs.block.size配置项 ...