日誌記錄是任何應用程式的關鍵組成部分,可提供對其行為和執行狀況的洞察。但是,過多的日誌記錄可能會使輸出混亂並掩蓋有用的資訊,尤其是當詳細日誌來自特定類時。
在本教程中,我們將探討如何禁用 Logback 中特定類的日誌記錄。
為什麼要禁用日誌記錄?
禁用特定類的日誌記錄在多種情況下可能會有好處:
- 減少日誌量:減少日誌量可以幫助我們專注於相關資訊,降低儲存/處理成本。
- 安全性:有些類可能會無意中記錄敏感資訊;讓他們沉默可以減輕這種風險。
- 效能:過多的日誌記錄會影響效能;禁用詳細記錄器有助於保持最佳應用程式效能。
瞭解Logback配置
首先,Logback配置透過 XML 檔案進行管理,通常名為logback.xml。該檔案定義了記錄器、附加器及其格式,允許開發人員控制記錄的內容和位置。
一種典型的配置包括一個或多個附加程式和一個根記錄器。 Appender 定義輸出目的地,例如控制檯或檔案。
這是一個簡單的例子:
<configuration> <appender name=<font>"console" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg %n</pattern> </encoder> </appender> <root level="INFO"> <appender-ref ref="console"/> </root> </configuration>
|
此配置將INFO級別(及更高階別)日誌定向到控制檯,格式為日期、執行緒名稱、日誌級別和日誌訊息。禁用特定類的日誌記錄
要禁用 Logback 中特定類的日誌記錄,我們可以為該類定義一個記錄器,並將級別設定為OFF。這將使來自類的所有日誌記錄呼叫靜音。
1.我們的詳細類
讓我們建立示例VerboseClass來說明本教程:
public class VerboseClass { private static final Logger logger = LoggerFactory.getLogger(VerboseClass.class); public void process() { logger.info(<font>"Processing data in VerboseClass..."); } public static void main(String[] args) { VerboseClass instance = new VerboseClass(); instance.process(); logger.info("Main method completed in VerboseClass"); } }
|
然後我們可以執行它來檢視日誌輸出:17:49:53.901 [main] INFO c.b.l.disableclass.VerboseClass - Processing data in VerboseClass... 17:49:53.902 [main] INFO c.b.l.disableclass.VerboseClass - Main method completed in VerboseClass
|
2.禁用VerboseClass的日誌記錄
要禁用其日誌,請在logback.xml中新增記錄器條目:
<logger name=<font>"com.baeldung.logback.disableclass.VerboseClass" level="OFF"/>
|
新增此記錄器後,logback.xml的外觀如下:
<configuration> <appender name=<font>"console" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg %n</pattern> </encoder> </appender> <logger name="com.baeldung.logback.disableclass.VerboseClass" level="OFF"/> <root level="INFO"> <appender-ref ref="console"/> </root> </configuration>
|
透過此配置,VerboseClass將不再輸出日誌,而其他類將繼續在INFO級別或以上級別記錄日誌。最後我們可以再次執行這個類,可以看到沒有日誌顯示了。