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

Log4j 實現不同模塊日誌輸出到不同文件

     編輯:Java 綜合教學

一、目標

業務日誌按模塊分離:註冊日誌 → register.log、登陸日誌 → login.log,支持按天滾動(register-2024-01-15.log)。

二、Maven 依賴

<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-api</artifactId>
  <version>1.7.6</version>
</dependency>
<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-log4j12</artifactId>
  <version>1.7.6</version>
</dependency>

三、log4j.properties 核心配置

# 根 Logger
log4j.rootCategory=INFO, stdout

# 控制台輸出
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%p:%d{yyyyMMdd HH:mm:ss} %c: %m%n

# 日誌目錄
logdir=/Users/zhengcanrui/WORK/test/logs

# register 模塊
log4j.logger.register=INFO, register
log4j.appender.register=org.apache.log4j.DailyRollingFileAppender
log4j.appender.register.File=${logdir}/register.log
log4j.appender.register.DatePattern='_'yyyy-MM-dd'.log'
log4j.appender.register.layout=org.apache.log4j.PatternLayout
log4j.appender.register.layout.ConversionPattern=%d %p [%c %L %l] - %m%n
log4j.additivity.register=true

# login 模塊
log4j.logger.login=INFO, login
log4j.appender.login=org.apache.log4j.DailyRollingFileAppender
log4j.appender.login.File=${logdir}/login.log
log4j.appender.login.DatePattern='_'yyyy-MM-dd'.log'
log4j.appender.login.layout=org.apache.log4j.PatternLayout
log4j.appender.login.layout.ConversionPattern=%d %p [%c] - %m%n
log4j.additivity.login=false  # 不向父 Logger 傳遞

關鍵屬性解析

  • log4j.additivity.<logger名>=false:禁止子 Logger 向父 Logger 傳遞,實現隔離
  • DailyRollingFileAppender + DatePattern:按天自動滾動
  • 命名規範:log4j.appender.<模塊名>.屬性

四、Java 代碼獲取 Logger

private static final Logger register = Logger.getLogger("register");
private static final Logger login = Logger.getLogger("login");

public static void registerInfo() { register.info("[register] 用戶註冊"); }
public static void loginInfo() { login.info("[login] 用戶登陸"); }

五、運行效果

架構圖

生成文件

文件內容

控制台僅輸出 root 配置的內容,文件按模塊獨立記錄,滾動命名正確。

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