SpringBoot集成Slf4J+logback

一、导入Slf4J依赖

因spring-boot-starter中已存在slf4jlogback依赖

所以只需添加lombok依赖(使用@Slf4J注解)

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.0</version>
</dependency>

二、编写logback文件

logback启动时会在资源路径下顺序读取 logback.configurationFilelogback.groovylogback-test.xmllogback.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中配置输出级别,筛选需要输出到文件中的信息

posted @ 2021-09-02 11:30  Ho-Yu-Fung  阅读(373)  评论(0编辑  收藏  举报