Java Spring Boot 添加 logback.xml 报错

这是我的项目架构

项目架构

这是我的controller

package com.hatom.dashitwelve.controller;   

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class IndexController {
    //logback
    private final static Logger logger = LoggerFactory.getLogger(IndexController.class);
    /**
     * 访问首页
     * @return
     */
     @RequestMapping(value = "/index")
     public String index(){
        logger.debug("记录debug日志");
        logger.info("访问了index方法");
        logger.error("记录error错误日志");
        return "index";
     }
}

这是我的 logback.xml

<?xml version="1.0" encoding="UTF-8" ?>
<configuration debug="false">
    <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
    <property name="LOG_HOME" value="./logs" />
    <!--控制台输出-->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化输出 :%d 表示日期,%thread 表示线程名,%-5level 级别从左显示5个字符宽度,%msg 日志消息,%n 换行符-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
        </encoder>
    </appender>
    <!--按照每天生成日志文件-->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--日志文件输出的文件名-->
            <FileNamePattern>${LOG_HOME}/runtime.log.%d{yyyy-MM-dd}.log</FileNamePattern>
            <!--日志文件保留天数-->
            <MaxHistory>30</MaxHistory>
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化输出 :%d 表示日期,%thread 表示线程名,%-5level 级别从左显示5个字符宽度,%msg 日志消息,%n 换行符-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
        </encoder>
        <!--日志文件最大的大小-->
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <MaxFileSize>10MB</MaxFileSize>
        </triggeringPolicy>
    </appender>

    <!--日志输出级别-->
    <root level="INFO">
        <appender_ref ref="STDOUT"/>
        <appender_ref ref="FILE"/>
    </root>
</configuration>

控制台输出

图1
图2

希望知情认士可以耐心解答,谢谢


<!--日志文件输出的文件名-->
${LOG_HOME}/runtime.log.%d{yyyy-MM-dd}.log
<!--日志文件保留天数-->
30


<!--格式化输出 :%d 表示日期,%thread 表示线程名,%-5level 级别从左显示5个字符宽度,%msg 日志消息,%n 换行符-->
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n

这两句话调换下位置

    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
        <MaxFileSize>10MB</MaxFileSize>
    </triggeringPolicy>

            暂时把上面那个注释了,
             <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--日志文件输出的文件名 -->
            <FileNamePattern>${LOG_HOME}/zipkin/%d{yyyy-MM-dd}.log</FileNamePattern>
            <!--日志文件保留天数 -->
            <MaxHistory>30</MaxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}][%thread][%p][%logger{0}] %m%n</pattern>
            <charset>UTF-8</charset>
        </encoder>23
    </appender>
            替换为上面的那句

图片说明

没有指定日志文件名,在你的file appender里加上file标签,类似

logs/app.log
......

参考一下别人的:

https://www.mkyong.com/logging/logback-xml-example/

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

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

<logger name="com.mkyong.web" level="debug"
    additivity="false">
    <appender-ref ref="STDOUT" />
</logger>

<root level="error">
    <appender-ref ref="STDOUT" />
</root>