SpringBoot集成Slf4J+logback
一、导入Slf4J依赖
因spring-boot-starter中已存在slf4j
和logback
依赖
所以只需添加lombok
依赖(使用@Slf4J注解)
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.0</version>
</dependency>
二、编写logback文件
logback启动时会在资源路径下顺序读取 logback.configurationFile
,logback.groovy
,logback-test.xml
,logback.xml
等配置文件,对日志格式输出路径等信息进行配置,如存在则使用该文件,如不存在则会使用默认配置。也可自定义文件名在yml中的logging.config中进行自定义配置。
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
<!--定义当前项目名-->
<property name="PROJECT_NAME" value="MYAPP"/>
<!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
<property name="LOG_HOME" value="W:/slf4j/"/>
<!-- 定义日志格式 -->
<property name="LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] [%thread] [%-30.30logger{30}] %msg%n"/>
<!-- 控制台日志 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<!--日志文件 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<FileNamePattern>${LOG_HOME}/${PROJECT_NAME}_LOG_%d{yyyy-MM-dd}.log</FileNamePattern>
<!--日志文件保留天数-->
<MaxHistory>30</MaxHistory>
</rollingPolicy>
<encoder>
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
<charset>utf-8</charset>
</encoder>
<!--日志文件最大的大小-->
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<MaxFileSize>10MB</MaxFileSize>
</triggeringPolicy>
<!--日志过滤级别-->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>DEBUG</level>
</filter>
</appender>
<!-- 日志输出级别 -->
<logger name="org.springframework" level="INFO"/>
<logger name="com.hl.magic" level="INFO"/>
<!--用来指定最基础的日志输出级别并指定<appender>,可以理解为根logger-->
<root level="INFO">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE"/>
</root>
</configuration>
三、使用
在需要日志记录的类上打上@Slf4j注解,使用log进行日志输出。
@Slf4j是lombok提供的注解,相当于private final Logger log = LoggerFactory.getLogger(当前类名.class),如果不使用lombok也可自行通过LoggerFactory生成logger
日志级别
error
: 用户程序报错,必须解决的时候使用此级别打印日志。
warn
:警告,不会影响程序的运行,但是值得注意。
info
: 一般处理业务逻辑的时候使用,就跟 system.err打印一样,用于说明此处是干什么的。
debug
: 一般放于程序的某个关键点的地方,用于打印一个变量值或者一个方法返回的信息之类的信息
trace
: 一般不会使用,在日志里边也不会打印出来,最低的一个日志级别。
@SpringBootApplication
@EnableScheduling
@Slf4j
public class RunnerTestApplication {
public static void main(String[] args) {
SpringApplication.run(RunnerTestApplication.class, args);
log.info("----------SpringBoot启动------------");
}
@Scheduled(fixedRate = 1000)
public static void cron(){
log.info("--------------scheduling-"+new Date()+"------------");
}
}
在用户logback中配置的日志输出路径中可找到对应的输出日志
用户可在logback中配置输出级别,筛选需要输出到文件中的信息