# SpringBoot配置日志(log4j版)
# 介绍
在软件开发中,日志是个很重要的东西,它记录系统中方法运行的过程信息和系统报错时的错误信息。开发人员在排查系统中的错误,就可以通过错误日志来进行排查,如果没有日志那排查错误得发疯。。。
在SpringBoot版本2.X.X以后,SpringBoot就将log4j设置为默认的日志框架了。
后面我将介绍SpringBoot中如何设置log4j,好好保存日志,是我们必须的。
这里的日志指的就是我们在控制台中看到的信息,如图所示:

# Log4j简介
Log4j有三个主要的组件:
- Loggers(记录器):日志类别和级别
- Appenders (输出源):日志要输出的地方
- Layouts(布局):日志以何种形式输出
# Loggers
系统日志分为五个级别:DEBUG、INFO、WARN、ERROR和FATAL。
级别顺序为:DEBUG < INFO < WARN < ERROR < FATAL。
Log4j只输出级别不低于设定级别的日志信息,比如设置记录级别为INFO后,DEBUG级别的信息就不会被记录,INFO及以后的级别会被记录。
# Appenders
Log4j有很多强大的功能,比如允许把日志输出到不同的地方,如控制台(Console)、文件(Files)等,可以根据天数或者文件大小产生新的文件,可以以流的形式发送到其它地方等。
常使用的类如下:
org.apache.log4j.ConsoleAppender(控制台)
org.apache.log4j.FileAppender(文件)
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
log4j.appender.appenderName = className
log4j.appender.appenderName.Option1 = value1
log4j.appender.appenderName.OptionN = valueN
2
3
# Layouts
Layouts提供四种日志输出样式,如根据HTML样式、自由指定样式、包含日志级别与信息的样式和包含日志时间、线程、类别等信息的样式。 常使用的类如下:
- org.apache.log4j.HTMLLayout(以HTML表格形式布局)
- org.apache.log4j.PatternLayout(可以灵活地指定布局模式)
- org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串)
- org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等信息)
log4j.appender.appenderName.layout =className
log4j.appender.appenderName.layout.Option1 = value1
log4j.appender.appenderName.layout.OptionN = valueN
2
3
Log4j支持两种配置文件格式:
- 一种是XML格式的文件,
- 一种是properties属性文件。
# 环境
- SpringBoot(2.2.6.RELEASE)
- log4j(2.17.0)
# 配置
# 基础配置版
这里我们将日志保存到指定的目录中,以文件的形式保存
# 配置pom.xml
这里我指定了springboot版本
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.6.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
2
3
4
5
6
这里要注意一下,由于我使用的SpringBoot版本是2.2.6,默认的log4j版本比较低低于2.15.0,低于这个版本的log4j2会有严重的漏洞(如果不清楚可以去百度一下log4j2重大漏洞),我们需要替换掉默认版本,这里使用2.17.0版本。
<properties>
<java.version>1.8</java.version>
<log4j2.version>2.17.0</log4j2.version>
</properties>
2
3
4
更换版本后我们可以看到,如图所示:

# 配置application.yml

logging:
level:
com.sun.natural_resources.mapper: debug
file:
path: ./logs
2
3
4
5
这里我指定了日志打印范围为mapper层,打印日志级别为debug
文件保存目录为相对目录下的logs文件夹下,日志文件默认名称为spring.log
这是基于默认配置的,如果项目重启了(或过了一天后),之前的日志会被压缩打包起来成gz文件,如下图所示:
