每一秒钟的时间都值得铭记

0%

Java日志记录之Slf4j

日志记录是Java开发中一个非常重要的部分,一份详细精确的日志记录,能够让我们快速地排查系统运行中所出现的问题,大大地提升我们的开发效率。

什么是Slf4j和Log4j

如果是初学者看到这两个名字,或者知道他们是和日志记录有关的类库,但是又搞不清楚两者之间的关系?

首选,我们先从名字来说起,这两个类库的名字都有一个共同的地方,那就是4j,其实4j就是for java的缩写,这两个类库的全称其实是Slf for javaLog for java,简而言之,就是Java的日志记录类库。

其中Slf4j是一个日志记录的API接口,而Log4j则是底层的具体实现,我们在一般使用的时候,都会直接使用Slf4j为我们提供的日志记录的接口,至于底层实现,我们只需要引入Log4j的依赖即可。

  • Slf4j的依赖
1
2
3
4
5
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.25</version>
</dependency>

在这个依赖中,Slf4j又自动依赖了Log4j的依赖,所以我们只需要引入一个依赖即可。

在这里插入图片描述

Slf4j的初步使用

  • 在正是使用Slf4j记录日志之前,我们还需要了解一下Log4j的日志配置文件。

log4j.properties

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# log4j的日志记录属性
# DEBUG, INOF,ERROR 第一个参数为日志记录级别
# Console, File, DailyRollingFile, RollingFile 第二个参数为日志记录的方式
log4j.rootLogger=debug, File

#Console 控制台打印日志,该方式会将日志打印在控制台中
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n

#File 文件记录方式,该方式会将日志记录在log4j.appender.File.File路径的文件中
log4j.appender.File = org.apache.log4j.FileAppender
log4j.appender.File.File = log/err.log
log4j.appender.File.layout = org.apache.log4j.PatternLayout
log4j.appender.File.layout.ConversionPattern =%d [%t] %-5p [%c] - %m%n

#DailyRollingFile 每天产生一个新的日志记录文件
log4j.appender.DailyRollingFile = org.apache.log4j.DailyRollingFileAppender
log4j.appender.DailyRollingFile.File = log/err.log
log4j.appender.DailyRollingFile.layout = org.apache.log4j.PatternLayout
log4j.appender.DailyRollingFile.layout.ConversionPattern =%d [%t] %-5p [%c] - %m%n

#RollingFile 文件达到指定大小的时候产生新的日志文件
log4j.appender.RollingFile = org.apache.log4j.RollingFileAppender
log4j.appender.RollingFile.File = log/err.log
log4j.appender.RollingFile.MaxFileSize=1KB
log4j.appender.RollingFile.MaxBackupIndex=3
log4j.appender.RollingFile.layout = org.apache.log4j.PatternLayout
log4j.appender.RollingFile.layout.ConversionPattern =%d [%t] %-5p [%c] - %m%n

LogTest

1
2
3
4
5
6
7
8
9
10
11
12
13
public class LogTest {
/**
* 使用LoggerFactory创建一个Logger对象
*/
private final Logger logger = LoggerFactory.getLogger(this.getClass());

@Test
public void delete() {
logger.info("记录信息日志");
logger.warn("记录警告日志");
logger.error("记录错误日志");
}
}

我们运行该代码,发现日志文件已经被记录到指定的log/err.log文件中。

Lombox和Slf4j

在每次记录日志的时候,我们都需要在每个类中使用LoggerFactory来创建一个日志记录对象,而在Lombox中,为我们提供了一个更为简便的方式来创建Logger对象记录日志。

@Slf4j

我们只需要在类上使用@Slf4j注解,那么Lombox就会自动为该类注入一个属性名为log的日志记录对象,我们就可以使用该对象来进行日志记录。

  • 首先,我们需要引入Lombox和Slf4j的依赖。
1
2
3
4
5
6
7
8
9
10
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.22</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.25</version>
</dependency>

Lombox除了需要引入相关依赖外,还需要安装Lombox插件才能够使用,其中IDEA自动集成了Lombox,我们可以直接通过IDEA的插件功能下载安装Lombox。

1
2
3
4
5
6
7
8
9
10
@Slf4j
public class LogTest {

@Test
public void delete() {
log.info("记录信息日志");
log.warn("记录警告日志");
log.error("记录错误日志");
}
}

注意:Lombox自动注入的log对象和我们自己使用LoggerFactory获取的logger对象都是Logger类的对象,只是对象名称不同而已。

坚持原创技术分享,您的支持将鼓励我继续创作!
-------------这是我的底线^_^-------------