首页 > 解决方案 > Spring Boot and Logging with External Tomcat 仅输出启动日志

问题描述

我的 Spring boot 2 应用程序在运行时未显示任何日志消息。我只能看到启动日志。此应用程序在生产服务器中部署为 WAR,我将日志配置为输出到文件:

logging.file = app.log
logging.level.root=WARN
logging.level.org.springframework.web=DEBUG
logging.level.org.hibernate=ERROR
logging.pattern.console= %d{yyyy-MM-dd HH:mm:ss} - %msg%n

在我的本地,我可以看到我在代码中包含的任何调试消息,但在服务器中我看不到。我只看到应用程序启动跟踪。

我生成文件的配置是由官方指南提供的。以及 app.war 中的 tomcat 依赖:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <scope>provided</scope>
    </dependency>

你知道发生了什么吗?它很奇怪。日志文件正在服务器中生成(我们将其部署在 docker 容器中),但应用程序运行后,不再向该文件输出日志。

标签: spring-boottomcat

解决方案


默认情况下,Spring Boot 日志记录在 INFO 级别,其中应包括 ERROR。

根据 Spring boot logging guide 79.1.1 Configure Logback for File-only Output

如果要禁用控制台日志记录并仅将输出写入文件,则需要一个logback-spring.xml可以导入file-appender.xml但不可以的自定义console-appender.xml,如以下示例所示:

<?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/file-appender.xml" />
    <root level="INFO">
        <appender-ref ref="FILE" />
    </root>
</configuration>

您还需要添加logging.file到您已经添加的 application.properties。


推荐阅读