首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Log4j 精準控制特定類日誌級別:解決 Quartz 刷屏實戰

     編輯:Java 綜合教學

場景:Quartz 定時任務刷屏控制台

專案引入 Quartz 後,刪除舊任務導致 LocalDataSourceJobStore 每秒輸出 ClusterManager: detected 1 failed or restarted instances...,嚴重干擾開發調試。通過 Log4j 鎖定該類別名稱,單獨提升級別至 WARN 即可靜默噪音。

配置片段(log4j.properties)

# 根級別
log4j.rootLogger=INFO, Console, File

# 精準屏蔽 Quartz 噪音
log4j.logger.org.springframework.scheduling.quartz.LocalDataSourceJobStore=WARN

# Appender 範例
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p [%t] %c - %m%n

核心語法解析

log4j.logger.完整類名=目標級別
  • 完整類名:控制台輸出的方括號內容,如 [org.springframework.scheduling.quartz.LocalDataSourceJobStore]。
  • 目標級別:OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE。設定 WARN 即過濾掉 INFO/DEBUG。

驗證生效

  1. 重啟應用觀察控制台,該類的 INFO 日誌應消失。
  2. 若未生效,檢查:
    ① 類名拼寫(含包路徑)
    ② 是否有更細粒度的 Logger 覆蓋(如子包單獨設定)
    ③ Log4j 版本是否為 1.x(2.x 語法不同)

延伸:常見第三方庫靜默配置

# Spring 核心
log4j.logger.org.springframework=WARN
# Hibernate SQL
log4j.logger.org.hibernate.SQL=WARN
log4j.logger.org.hibernate.type.descriptor.sql.BasicBinder=WARN
# MyBatis
log4j.logger.org.apache.ibatis=WARN
# Netty
log4j.logger.io.netty=WARN
# Tomcat
log4j.logger.org.apache.catalina=WARN

最佳實踐

  • 開發環境根級別 DEBUG,生產 INFO/WARN。
  • 噪音類單獨提級,不要 全局調高根級別,避免遺漏關鍵異常。
  • 配置檔納入版控,環境差異用 log4j-dev.properties / log4j-prod.properties + Maven Profile 切換。
  • 遷移至 Logback/SLF4J 享受原生級別控制與更好效能。

精準定位 Logger 名稱 + 單獨調級,是解決第三方庫刷屏的標準手法,成本極低且不影響業務日誌。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved