日志记录是Java开发中一个非常重要的部分,一份详细精确的日志记录,能够让我们快速地排查系统运行中所出现的问题,大大地提升我们的开发效率。
如果是初学者看到这两个名字,或者知道他们是和日志记录有关的类库,但是又搞不清楚两者之间的关系?
首选,我们先从名字来说起,这两个类库的名字都有一个共同的地方,那就是4j
,其实4j
就是for java
的缩写,这两个类库的全称其实是Slf for java
和Log for java
,简而言之,就是Java的日志记录类库。
其中Slf4j是一个日志记录的API接口,而Log4j则是底层的具体实现,我们在一般使用的时候,都会直接使用Slf4j为我们提供的日志记录的接口,至于底层实现,我们只需要引入Log4j的依赖即可。
<dependency>
<groupId>org.slf4jgroupId>
<artifactId>slf4j-log4j12artifactId>
<version>1.7.25version>
dependency>
在这个依赖中,Slf4j又自动依赖了Log4j的依赖,所以我们只需要引入一个依赖即可。
log4j.properties
# 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
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
文件中。
在每次记录日志的时候,我们都需要在每个类中使用LoggerFactory
来创建一个日志记录对象,而在Lombox中,为我们提供了一个更为简便的方式来创建Logger对象记录日志。
@Slf4j
我们只需要在类上使用@Slf4j
注解,那么Lombox就会自动为该类注入一个属性名为log
的日志记录对象,我们就可以使用该对象来进行日志记录。
<dependency>
<groupId>org.projectlombokgroupId>
<artifactId>lombokartifactId>
<version>1.16.22version>
dependency>
<dependency>
<groupId>org.slf4jgroupId>
<artifactId>slf4j-log4j12artifactId>
<version>1.7.25version>
dependency>
Lombox除了需要引入相关依赖外,还需要安装Lombox插件才能够使用,其中IDEA自动集成了Lombox,我们可以直接通过IDEA的插件功能下载安装Lombox。
@Slf4j
public class LogTest {
@Test
public void delete() {
log.info("记录信息日志");
log.warn("记录警告日志");
log.error("记录错误日志");
}
}
注意:Lombox自动注入的log对象和我们自己使用LoggerFactory获取的logger对象都是Logger类的对象,只是对象名称不同而已。