【问题标题】:Spring Boot logback-spring.xml not logging application logsSpring Boot logback-spring.xml 不记录应用程序日志
【发布时间】:2021-01-30 00:56:22
【问题描述】:

我使用的是 spring boot 2.3.1 版本,应用程序日志有问题。我的 logback-spring.xml 文件如下,

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd'T'HH:mm:ss.SSSZZ} [%thread] %-5level %logger{5} - %msg%n</pattern>
        </encoder>
    </appender>
    <appender name="APP_LOGGER" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>/var/log/app.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>/var/log/app.%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>15</maxHistory>
        </rollingPolicy>
        <encoder>
            <Pattern>%d{yyyy-MM-dd'T'HH:mm:ss.SSSZZ} %-5level %-12X{process} %-30([%thread]) %-29logger - %m%n</Pattern>
        </encoder>
    </appender>
    <logger name="com.sample" level="DEBUG" additivity="false"/>
    <logger name="org.springframework" level="INFO"/>

    <root level="DEBUG">
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="APP_LOGGER"/>
    </root>
</configuration>

我的控制器是,

package com.sample;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.GetMapping;

@RestController
public class Controller {

  private static final Logger LOGGER = LoggerFactory.getLogger(Controller.class);

  @GetMapping("/")
  public void greetings(){
    LOGGER.info("AAAAA....");
    LOGGER.debug("DDDD...");
    LOGGER.warn("WWW...");
    LOGGER.error("EEEE....")
  }

}

我尝试在 application.properties 文件中添加以下内容,

logging.level.root=DEBUG
logging.level.org.springframework=INFO
logging.level.com.sample=DEBUG

没有运气,还尝试了以下其他替代方法,并在application.properties中添加了文件路径logging.file.name=/var/log/app.log

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource="org/springframework/boot/logging/logback/defaults.xml" />
    <property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}/}spring.log}"/>
    <include resource="org/springframework/boot/logging/logback/console-appender.xml" />
    <include resource="org/springframework/boot/logging/logback/file-appender.xml" />
    
    <logger name="org.springframework.web" level="INFO"/>
    <logger name="com.sample" level="DEBUG"/>

    <root level="DEBUG">
        <appender-ref ref="CONSOLE" />
        <appender-ref ref="FILE" />
    </root>

</configuration>

app.log 文件正在创建,我在 app.log 文件中只看到与 spring 相关的日志,而不是应用程序日志。

【问题讨论】:

    标签: spring spring-boot logback slf4j


    【解决方案1】:

    您的配置运行良好。从application.properties 中删除日志记录配置。您需要点击 baseURL(example: http://localhost:8080/) 来查看控制器内部定义的日志。 我稍微修改了logback.xml,以便为日志目录使用变量。 这里是:

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <property name="LOG_PATH" value="/home/none47/logs"/>
        <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
            <encoder>
                <pattern>%d{yyyy-MM-dd'T'HH:mm:ss.SSSZZ} [%thread] %-5level %logger{5} - %msg%n</pattern>
            </encoder>
        </appender>
        <appender name="APP_LOGGER" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <file>${LOG_PATH}/app.log</file>
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <fileNamePattern>${LOG_PATH}/app.%d{yyyy-MM-dd}.log</fileNamePattern>
                <maxHistory>15</maxHistory>
            </rollingPolicy>
            <encoder>
                <Pattern>%d{yyyy-MM-dd'T'HH:mm:ss.SSSZZ} %-5level %-12X{process} %-30([%thread]) %-29logger - %m%n</Pattern>
            </encoder>
        </appender>
        <logger name="com.sample" level="DEBUG" additivity="false"/>
        <logger name="org.springframework" level="INFO"/>
    
        <root level="DEBUG">
            <appender-ref ref="CONSOLE"/>
            <appender-ref ref="APP_LOGGER"/>
        </root>
    </configuration>
    

    【讨论】:

    • 是的,这很奇怪,但我采用了混合方法,来自 Spring Console appender 的 console appender 和来自 ch.qos 的 File appender。它现在开始工作了。感谢您的意见。
    猜你喜欢
    • 2019-05-11
    • 2019-01-19
    • 1970-01-01
    • 2018-11-07
    • 2021-03-15
    • 2017-05-08
    • 2021-06-26
    • 1970-01-01
    • 2019-05-31
    相关资源
    最近更新 更多