Spring 中的日志管理

创建完 SpringBoot 项目后,在 resources 文件夹里创建一个 logback-spring.xml 文件

logback-spring.xml

(注意里边需要设置文件夹位置和 logger 标签中的包路径)

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
    <!-- 定义日志文件 输入位置 -->
    <property name="log_dir" value="D:/logs"/>
    <!-- 日志最大的历史 30天 -->
    <property name="maxHistory" value="30"/>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger -%msg%n</pattern>
        </encoder>
    </appender>

    <appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>{log_dir}/%d{yyyy-MM-dd}/error-log.log</fileNamePattern>
            <maxHistory>{maxHistory}</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
        </encoder>
    </appender>

    <appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>INFO</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>{log_dir}/%d{yyyy-MM-dd}/info-log.log</fileNamePattern>
            <maxHistory>{maxHistory}</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
        </encoder>
    </appender>

    <appender name="DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>DEBUG</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>{log_dir}/%d{yyyy-MM-dd}/debug-log.log</fileNamePattern>
            <maxHistory>{maxHistory}</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
        </encoder>
    </appender>

    <logger name="com.vue" level="debug"/>

    <root level="debug">
        <appender-ref ref="STDOUT"/>
        <appender-ref ref="ERROR"/>
        <appender-ref ref="INFO"/>
        <appender-ref ref="DEBUG"/>
    </root>
</configuration>

还需要 resources 文件夹下的 application.yml 或 application.properties 中配置

# 设置端口
server:
  port: 8081
  servlet:
    context-path: /
# 管理日志输出到 D 盘 logs 目录下
logging:
  config: classpath:logback-spring.xml
  file:
    path: D:/logs

随便写个测试类

TestController.java

package com.vue.vuetest.controller;

import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@Slf4j
@RequestMapping("/test")
public class TestController {

    @GetMapping
    public Object test() {
        log.info("-- /test");
        return "test 类执行成功";
    }

}

进入浏览器中进行访问一下

D 盘下出现了执行后的日志文件

配置debug的配置可以考虑不要,其次还可以优化具体导指定的包,比如这里我偷懒 logger name='com.vue' level='debug' 直接配了总体包,其实完全可以具体指定对哪个包进行输出

引用链接:整合Springboot+Vue(基础框架)

发表评论