log4j日誌文件配置

log4j已經停止更新了,官方建議升級到log4j2版本。但是如果你沒有使用異步輸出日誌的話,其實提升不大。

添加maven依賴

<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>
<!--log4j擴展工具,非必須-->
<dependency>
    <groupId>log4j</groupId>
    <artifactId>apache-log4j-extras</artifactId>
    <version>1.2.17</version>
</dependency>

log4j.properties配置文件配置示例

INFO級別的配置

log4j.rootLogger = INFO, CONSOLE, I, E
### 輸出到控制檯 ###
log4j.appender.CONSOLE = org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Target = System.out
log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern =  %d{[yyyy-MM-dd HH:mm:ss,SSS]} [%5p] [%c:%L] - %m%n

### 輸出INFO級別以上的日誌到文件中 ###
log4j.appender.I = org.apache.log4j.RollingFileAppender
log4j.appender.I.File = ./logs/project_name/info/log_info.log
log4j.appender.I.Append = true
#單個日誌大小500M
log4j.appender.I.MaxFileSize=500MB
#總共備份10GB
log4j.appender.I.MaxBackupIndex=20
## 輸出INFO級別以上的日誌
log4j.appender.I.Threshold = INFO
log4j.appender.I.layout = org.apache.log4j.PatternLayout
log4j.appender.I.layout.ConversionPattern = %d{[yyyy-MM-dd HH:mm:ss,SSS]} [%5p] [%c:%L] - %m%n

### 保存異常信息到單獨文件 ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
## 異常日誌文件名
log4j.appender.E.File = ${catalina.home}/logs/project_name/error/log_error.log
log4j.appender.E.Append = true
#每半天生成一個日誌文件
log4j.appender.E.DatePattern = '.'yyyy-MM-dd-a
## 只輸出ERROR級別以上的日誌!!!
log4j.appender.E.Threshold = ERROR
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %d{[yyyy-MM-dd HH:mm:ss,SSS]} [%5p] [%c:%L] - %m%n

DEBUG級別的日誌配置

log4j.rootLogger = DEBUG, CONSOLE, D, I, E
### 輸出到控制檯
log4j.appender.CONSOLE = org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Target = System.out
log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern =  %d{[yyyy-MM-dd HH:mm:ss,SSS]} [%5p] [%c:%L] - %m%n

### 輸出DEBUG級別以上的日誌到文件中 僅測試時使用,正式部署請將這裏的註釋掉###
log4j.appender.D = org.apache.log4j.RollingFileAppender
#日誌放到tomcat的bin目錄下
log4j.appender.D.File = ./logs/project_name/debug/log_debug.log
#單個日誌大小32M
log4j.appender.D.MaxFileSize=32MB
#總共備份64M
log4j.appender.D.MaxBackupIndex=2
log4j.appender.D.Append = true
## 輸出DEBUG級別以上的日誌
log4j.appender.D.Threshold = DEBUG
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %d{[yyyy-MM-dd HH:mm:ss,SSS]} [%5p] [%c:%L] - %m%n

### 輸出INFO級別以上的日誌到文件中 ###
log4j.appender.I = org.apache.log4j.RollingFileAppender
#日誌放到tomcat的logs目錄中
log4j.appender.I.File = ../logs/project_name/info/log_info.log
log4j.appender.I.Append = true
#單個日誌大小32M
log4j.appender.I.MaxFileSize=32MB
#總共備份512M
log4j.appender.I.MaxBackupIndex=16
## 輸出INFO級別以上的日誌
log4j.appender.I.Threshold = INFO
log4j.appender.I.layout = org.apache.log4j.PatternLayout
log4j.appender.I.layout.ConversionPattern = %d{[yyyy-MM-dd HH:mm:ss,SSS]} [%5p] [%c:%L] - %m%n

### 保存異常信息到單獨文件
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
#日誌放到tomcat的logs目錄中
log4j.appender.E.File = ${catalina.home}/logs/project_name/error/log_error.log
log4j.appender.E.Append = true
#每天生成一個日誌文件
log4j.appender.E.DatePattern = '.'yyyy-MM-dd
## 只輸出ERROR級別以上的日誌!!!
log4j.appender.E.Threshold = ERROR
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %d{[yyyy-MM-dd HH:mm:ss,SSS]} [%5p] [%c:%L] - %m%n

額外的說明:這裏使用了${catalina.home}來獲取tomcat的路徑,讓日誌輸出到tomcat的logs文件目錄下。

一些注意事項:低級別日誌也會輸出比它級別高的日誌; 根據日期來設置日誌的無法設置文件個數

補充:指定某個包下或類的日誌級別

log4j.logger.包路徑=日誌級別
#例如:只打印spring的錯誤日誌
 log4j.logger.org.springframework=ERROR

使用

import org.apache.log4j.Logger;

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

    public static void main(String[] args){
        logger.trace("------trace---追蹤級別,一般不使用");
        logger.debug("------debug---調試級別");
        logger.info("-------info----普通級別");
        logger.warn("-------warn----警告級別");
        logger.error("------error---錯誤級別");
        logger.fatal("------fatal---嚴重級別,程序已經無法運行或應該停止的情況下");
        System.out.println("-------------------控制檯輸出--------------------------");
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章