6.跟我学SpringBoot-日志处理

96
孔垂云
2017.12.03 17:41 字数 328

SpringBoot的日志处理还是比较简单的,默认是logBack作为日志处理组件,只需要引用logback.xml配置即可。

下面讲一下SpringBoot怎么配置logBack。

1.maven依赖

<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-web</artifactId>
</dependency>

不需要再单独引入logback的配置,因为SpringBoot默认是使用Logback作为日志组件的


日志默认引用.png

2.logback配置

LogBack默认的日志文件名为logback-spring.xml,放在resouces根目录下。
剩下的就是Logback的具体参数了,没有区别

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="30 seconds">
    <!-- appender -->
    <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss} - %m%n
            </pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <!-- 系统日志配置 -->
    <appender name="sysLogAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOG_PATH}/sys.log</file>
        <append>true</append>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <FileNamePattern>${LOG_PATH}/%d{yyyyMMdd}/sys-%d{yyyyMMdd}.log
            </FileNamePattern>
            <maxHistory>365</maxHistory>
        </rollingPolicy>
        <encoder>
            <ImmediateFlush>true</ImmediateFlush>
            <charset>utf-8</charset>
            <Pattern>[%d{yyyyMMdd HH:mm:ss}] - %m%n</Pattern>
        </encoder>
    </appender>
    <!-- additivity为false不向root控制台输出 -->
    <logger name="sysLog" additivity="false" level="info">
        <appender-ref ref="stdout"/>
        <appender-ref ref="sysLogAppender"/>
    </logger>

    <!-- root 默认日志配置 -->
    <root level="info">
        <appender-ref ref="stdout"/>
        <appender-ref ref="sysLogAppender"/>
    </root>
    <logger name="org.springframework" level="INFO"/>
</configuration>

这里面有一个参数${LOG_PATH},实际生产中,日志的路径需要统一指定,最好在application.yml统一命名,便于以后的参数几种管理。

logging:
  path: d:\\logs\\springboot

application.yml 增加如上配置,则整个日志的存储都放在设置的路径下了。
这里说明一下,SpringBoot的启动和停止日志也可以同时输出至sys.log这个下面,这样就可以记录应用的启动和停止日志,便于追溯问题。

<!-- root 默认日志配置 -->
    <root level="info">
        <appender-ref ref="stdout"/>
        <appender-ref ref="sysLogAppender"/>
    </root>

3.具体使用

@RestController
public class LogController {
    private static Logger sysLog = LoggerFactory.getLogger("sysLog");

    @RequestMapping("/log")
    public void log() {
        sysLog.info("日志成功输出");
    }
}

这样就可以输出日志了。

4.总结

SpringBoot有默认的Logback日志组件,如果要用其他的日志组件,比如Log4J,Log4J2,可以自行百度搜索。

源码下载

本例子详细源码

跟我学-SpringBoot
Web note ad 1