防止 Spring Boot 将日志打印到控制台

2022-09-03 12:44:22

我正在为我的应用程序使用弹簧引导,并且我正在使用默认的弹簧引导日志记录。

在我的 中,我添加了 的文件路径 ,application.propertieslogging.file

        logging.file= ${logger_path}

和我的包含pom.xml

       <logger_path>/tmp/app.log</logger_path>

当我启动应用程序时,它会将日志记录消息打印到 文件中,但问题是它也在控制台上打印日志消息。我真的不明白为什么它在控制台上打印(尽管它将它们打印到指定的文件),当我指定了./tmp/app.loglog file

是否有任何配置可以防止 Spring Boot 将日志消息打印到控制台?


答案 1

Spring boot附带内置记录器,默认情况下配置为打印到控制台。logback

您需要覆盖配置(在类路径上提供您自己的配置)。此处对此进行了描述 - - 第 66.1 节logbacklogback.xml

如何禁用日志回日志 在此处阅读 -

如您所见,您必须提供价值...像这样:OFF

<configuration>
  <include resource="base.xml" />
   .
   .
  <property name="root.level.console" value="OFF" />
</configuration>

注意:请记住,这里的一般思想是,来自spring-boot的logback配置是最小的。目的是提供自己的日志备份配置并完全覆盖现有配置 - 例如,提供自己的日志备份配置,仅配置日志文件附加器 - 这应该是您的一般方法。


答案 2

在 中包含和不包含以下配置:file-appender.xmlconsole-appenderlogback-spring.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.fileapplication.properties

这符合弹簧启动文档中提到的内容 - http://docs.spring.io/spring-boot/docs/current/reference/html/howto-logging.html


推荐