创建完 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'
直接配了总体包,其实完全可以具体指定对哪个包进行输出