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

Log4j 靈活控制日志開關:外部配置實現零代碼修改啟停日志

     編輯:Java 相關知識

為什麼選 Log4j?

相比 java.util.logging,Log4j 支持外部配置文件動態調整級別、輸出目標、格式,無需重啟應用、無需改代碼,生產環境排查極其方便。

準備工作

  • log4j.jar
  • log4j.properties 放在 classpath 根目錄

文件結構

代碼中使用

import org.apache.log4j.Logger;

public class CheckUserServlet {
    private static final Logger logger = Logger.getLogger(CheckUserServlet.class);

    public void doSomething() {
        logger.info("hello, world"); // 記錄 INFO 級別日志
    }
}

核心配置:log4j.properties

# 設置 logger 級別與輸出端
log4j.logger.CheckUserServlet=INFO, A

# 輸出端 A:每天滾動一個文件
log4j.appender.A=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A.File=d:/test.log
# 也可用 ${webapp.root} 表示 Tomcat 根目錄

# 佈局格式
log4j.appender.A.layout=org.apache.log4j.PatternLayout
log4j.appender.A.layout.ConversionPattern=%d %m %n

一鍵關閉日志的秘訣

將級別設置為 OFF 即可完全禁用:

log4j.logger.CheckUserServlet=OFF, A

無需註釋代碼、無需重啟,修改配置文件即時生效(需配置 log4j.refreshInterval 或使用 Log4j 2 的自動重載)。

多日志文件輸出

不同模塊用不同 Logger 名稱,配置多個 appender:

log4j.logger.moduleA=INFO, A
log4j.logger.moduleB=DEBUG, B

log4j.appender.A=...
log4j.appender.B=...

Log4j 核心配置詳解

組件常用實現類說明
Logger 級別OFF, FATAL, ERROR, WARN, INFO, DEBUG, ALL建議用 ERROR, WARN, INFO, DEBUG 四級
AppenderConsoleAppender, FileAppender, DailyRollingFileAppender, RollingFileAppender, WriterAppender輸出目的地
LayoutPatternLayout, HTMLLayout, SimpleLayout, TTCCLayout輸出格式

PatternLayout 常用佔位符

%m  消息內容
%p  級別
%r  啟動以來毫秒數
%c  Logger 名稱(通常為全類名)
%t  線程名
%n  換行符
%d  日期時間,可指定格式如 %d{yyyy-MM-dd HH:mm:ss,SSS}
%l  調用位置(類.方法:行號)

完整示例

log4j.rootLogger=INFO, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[QC] %p [%t] %C.%M(%L) | %m%n

掌握外部配置,日志管理由「寫死代碼」變為「運維配置」,靈活性提升數個檔次!

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