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

Kar*_*hik 13 java spring spring-boot

我正在为我的应用程序使用spring boot,我正在使用默认的spring boot logging.

在我application.properties,我添加了文件路径logging.file,

        logging.file= ${logger_path}
Run Code Online (Sandbox Code Playgroud)

和我的pom.xml包含

       <logger_path>/tmp/app.log</logger_path>
Run Code Online (Sandbox Code Playgroud)

当我启动应用程序时,它会将日志消息打印到文件中/tmp/app.log,但问题是它还会在控制台上打印日志消息.我真的不明白为什么它在控制台上打印(虽然它是将它们打印到指定的文件)当我指定了一个log file.

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

hov*_*yan 14

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

您需要覆盖logback配置(logback.xml在类路径上提供您自己的配置).这在这里描述- - 第66.1节

如何禁用此处的 logback日志记录-

正如你所看到的,你必须提供价值OFF...类似于:

<configuration>
  <include resource="base.xml" />
   .
   .
  <property name="root.level.console" value="OFF" />
</configuration>
Run Code Online (Sandbox Code Playgroud)

注意:请记住,这里的一般想法是来自spring-boot的logback配置是最小的.目的是您提供自己的logback配置并完全覆盖现有配置 - 例如,提供您自己的logback配置,只配置了log file-appender - 这应该是您的一般方法.


小智 6

包括但file-appender.xmlconsole-appender包含以下配置logback-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>
Run Code Online (Sandbox Code Playgroud)

你还需要添加logging.file到你的application.properties

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