繁体   English   中英

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

[英]Prevent Spring Boot from printing logs to console

我正在为我的应用程序使用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将日志消息打印到控制台?

Spring引导带有内置的logback logger,它被配置为默认打印到控制台。

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

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

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

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

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

logback-spring.xml包含file-appender.xml而不是console-appender以及以下配置:

<?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

我尝试从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

这里可以找到类似的讨论。

我的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时,我犯了一个非常愚蠢的错误:在文件名的开头添加了一个空格。 因此从未使用过该文件。 所以只需再看一下文件名,在“src / main / resources”中添加文件,并从属性文件中删除所有“logging.config”条目。

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

这里回答

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM