Spring boot配置logback日志打印到指定路径文件

在实际项目开发中,一般都是使用log打印日志到指定路径,生成文件,而平时使用的System.out.pring()只能输出日志到控制台。

当我们把项目打成war包部署到服务器上,会有不用的用户使用我们的应用,这个时候如果一个客户端出现了问题,那我们如果在控制台去找该用户抛出的异常或错误信息,是一件很难受,很麻烦的事情。为了解决这个问题,开发或维护人员能够迅速定位日志,我们实际的项目中的日志都是使用配置引入第三方jar包或者引入插件,从而将日志打印到我们制定的路径的文件夹中,生成 .log 文件。

这里的滚动策略是按照时间滚动的,每一天生成一个新的日志文件。

下面是文件logback-spring.xml:

<?xml version="1.0" encoding="UTF-8" ?>

<configuration>
    <appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <pattern>
                %d - %msg%n
            </pattern>
        </layout>
    </appender>

    <appender name="fileInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>DENY</onMatch>
            <onMismatch>ACCEPT</onMismatch>
        </filter>
        <encoder>
            <pattern>
                %msg%n
            </pattern>
        </encoder>
        <!--滚动策略-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--路径-->
            <fileNamePattern>E:\Git\log\info/info.%d.log</fileNamePattern>
        </rollingPolicy>
    </appender>


    <appender name="fileErrorLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>ERROR</level>
        </filter>
        <encoder>
            <pattern>
                %msg%n
            </pattern>
        </encoder>
        <!--滚动策略-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--路径-->
            <fileNamePattern>E:\Git\log\error/error.%d.log</fileNamePattern>
        </rollingPolicy>
    </appender>

    <root level="info">
        <appender-ref ref="consoleLog" />
        <appender-ref ref="fileInfoLog" />
        <appender-ref ref="fileErrorLog" />
    </root>

</configuration>

在pom.xml中添加一下依赖:

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

然后看一下测试类LoggerTest.java:

package com.imooc;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import lombok.extern.slf4j.Slf4j;

@RunWith(SpringRunner.class)
@SpringBootTest
@Slf4j
public class LoggerTest {
   // private final Logger logger = LoggerFactory.getLogger(LoggerTest.class);
    @Test
    public void test1(){
        log.info("info....");
        log.debug("debug....");
        log.error("error....");
    }
}

我们在这里使用了一个插件lombok,在idea和eclipse中都可以安装:

我这里一开始引入依赖之后报错,是因为没有配置编辑器的maven:

上面测试类中使用了lombok控件支持的一个注解@Slf4j,这个注解可以方便我们dao层的实现,省去了setter和getter方法,同时也方便了日志的输出,不用再每一个类中都 创建一个Logger对象,直接调用log方法就可以打印日志了,这个使用起来还是很方便的,我推荐使用这个注解和lombok插件。

猜你喜欢

转载自blog.csdn.net/IBLiplus/article/details/82859341