1. 概述
通常,控制枱日誌能讓我們以簡單直觀的方式調試系統。然而,在某些情況下,我們可能不想在系統中啓用此功能。
在本快速教程中,我們將學習如何在運行 Spring Boot 應用程序時避免將日誌寫入控制枱。
我們將採用簡潔明瞭的示例,展示如何實現這一目標,無論我們是否使用 Logback、Log4js2 還是 Java Util Logging 框架。
要了解更多關於 Spring Boot 中用於日誌記錄的框架的信息,我們建議您查看我們的 Logging in Spring Boot 教程。
2. 如何禁用 Logback 的控制枱輸出
如果我們的項目使用了 Spring Boot 啓動器,那麼 spring-boot-starter-logging 依賴項也會包含在內。
這個啓動器配置了 Logback 作為默認框架,並且默認情況下只將日誌輸出到控制枱。
可以通過添加 logback-spring.xml 文件到我們的資源目錄中來自定義此配置。
例如,讓我們配置 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>此外,我們需要在我們的 application.properties 文件中配置 logging.file 屬性:
logging.file=baeldung-disabled-console.log注意:實際上禁用控制枱輸出的原因是我們沒有將 console-appender.xml 包含在我們的 XML 文件中,因此一個空 configuration 標籤也可以實現同樣的效果。
或者,我們可以通過使用應用程序屬性覆蓋默認配置來避免創建 XML 文件。
例如,我們可以利用 logging.pattern.console 屬性:
logging.pattern.console=此屬性被翻譯為 CONSOLE_LOG_PATTERN 系統屬性,然後由 Spring 默認配置使用。
這種方法當然不如前一種方法乾淨且穩健。它並非該屬性的預期用途,因此此“技巧”可能在未來某個時候由 Logback 不支持。
此外,我們可以通過將根日誌記錄器的級別設置為 OFF 來禁用所有日誌活動。
logging.level.root=OFF3. 如何避免在控制枱中記錄 Log4j2 的日誌
正如我們所知,Log4j2 支持使用 XML、JSON、YAML 或 properties 格式來配置其日誌行為。
為了簡化説明,我們現在將演示一個簡單的 log4j2.xml 文件的示例。
其他格式都遵循相同的配置結構:
<Configuration status="INFO">
<Appenders>
<File name="MyFile" fileName="baeldung.log"
immediateFlush="true" append="false">
<PatternLayout pattern=
"%d{yyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</File>
</Appenders>
<Loggers>
<Root level="info">
<AppenderRef ref="MyFile"/>
</Root>
</Loggers>
</Configuration>正如 Logback 的配置一樣,框架避免將日誌輸出到控制枱的原因並非配置本身,而是根日誌器沒有引用 Console Appender。
4. 如何禁用 Java Util Logging 的控制枱日誌
Java Util Logging(或簡稱“JUL”)在如今的 Spring Boot 應用中可能不是最流行的日誌解決方案。
無論如何,我們將分析如何消除控制枱日誌,以防框架存在於我們的項目中。
我們只需要將以下值添加到資源文件夾中的默認 logging.properties 文件中:
handlers=java.util.logging.FileHandler
java.util.logging.FileHandler.pattern=baeldung.log
java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter幷包含在我們的 application.properties 文件中 logging.file 屬性。 任何值都可以生效:
logging.file=true5. 結論
通過這些簡短的示例,我們現在可以輕鬆地在我們的應用程序中禁用控制枱日誌,無論我們使用什麼日誌框架。