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

时间:2015-08-11 06:58:44

标签: java spring spring-boot

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

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

        logging.file= ${logger_path}

我的pom.xml包含

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

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

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

5 个答案:

答案 0 :(得分:13)

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

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

如何禁用logback logging read here -

你可以看到你必须提供值OFF ...类似于:

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

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

答案 1 :(得分:6)

file-appender.xml中包含console-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>

您还需要将logging.file添加到application.properties

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

答案 2 :(得分:3)

我尝试从logback.xml中删除控制台配置。但是,它仍然在登录控制台。所以我做的是,我刚刚删除了springboot在日志记录配置中添加的appender。因此,我们可以在控制台和单独的日志文件中停止springboot日志记录。在应用程序的末尾添加以下行,添加特定的appender。您的自定义appender不应与任何这些appender名称匹配。它对我有用。

// get instance of your log4j instance
Logger logger = LogManager.getRootLogger();
logger.removeAppender("CONSOLE"); // stops console logging
logger.removeAppender("LOGFILE"); // stops file logging

答案 3 :(得分:1)

可以找到类似的讨论here

我的logback.xml看起来像这样:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <include resource="org/springframework/boot/logging/logback/defaults.xml" />
  <include resource="org/springframework/boot/logging/logback/file-appender.xml" />

  <root level="INFO">
    <appender-ref ref="FILE" />
  </root>
</configuration>

万一你仍然遇到问题:我已经阅读了很多关于该主题的讨论,而且对我来说根本不起作用。不幸的是,当我第一次创建文件logback.xml时,我犯了一个非常愚蠢的错误:在文件名的开头添加了一个空格。因此从未使用过该文件。所以只需再看一下文件名,将文件添加到&#34; src / main / resources&#34;并删除任何&#34; logging.config&#34;您的属性文件中的条目。

答案 4 :(得分:0)

使用最新的1.3.1版本测试,使用较新的版本base.xml已重命名为defaults.xml

Answer here