簡體   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