Log4j配置及使用


一、log4j.properties配置文件

Log4j默認的配置文件是log4j.properties,將該文件置於classpath下,容器啟動時會初始化Log4j。Log4j把日志級別由低到高依次分為ALL、TRACE、DEBUG、INFO、WARN、ERROR、FITAL和OFF等。其中,級別高的會屏蔽低的信息。如果設置為WARN,則INFO、DEBUG都不會輸出。

二、5個重要的概念

Log4j配置中有5個重要的概念:日志記錄器(Logger)、根記錄器(rootLogger)、類別(category)、輸出地(Appender)以及日志格式化器(Layout)。其中,Logger負責記錄日志;rootLogger是所有記錄器的父親,任何記錄器都可繼承rooLogger的配置;category可以設置類別下所有的Logger,類似於java中的包,效果與Logger名字等價;Appender負責輸出到什么地方;Layout負責以什么格式輸出、輸出哪些附加信息(比如:時間、類名、方法名、所在行數等)。在log4j.properties配置中,log4j.logger后面配置的是Logger,log4j.appender后面配置的是Appender,rootLogger直接用log4j.rootLogger配置。

三、1個log4j.properties配置實例

# 配置rootLogger為info級別,兩個輸出地:all_appender,console_appender
log4j.rootLogger=info,all_appender,console_appender
# 定義一個Logger,級別為debug,兩個輸出地:console_appender,bd_data_appender
log4j.logger.debugLogger=debug,console_appender,bd_data_appender
log4j.logger.infoLogger=info,console_appender,info_appender
log4j.logger.warnLogger=warn,console_appender,warn_appender
log4j.logger.errorLogger=error,console_appender,error_appender
log4j.logger.fatalLogger=fatal,console_appender,fatal_appender

#輸出到控制台
log4j.appender.console_appender=org.apache.log4j.ConsoleAppender
log4j.appender.console_appender.layout=org.apache.log4j.PatternLayout    #自定義輸出信息
log4j.appender.console_appender.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss}-%t-[%p]\: %m%n
#將info以上級別的日志輸出到按大小滾動文件
log4j.appender.info_appender=org.apache.log4j.RollingFileAppender
log4j.appender.info_appender.File=mm_logs/info.log    #滾動文件名
log4j.appender.info_appender.MaxFileSize=20000KB    #文件達到20000KB就自動改名:info.log.1,info.log.2,info.log.3...直到info.log.30
log4j.appender.info_appender.MaxBackupIndex=30    #最多備件30個文件
log4j.appender.info_appender.layout=org.apache.log4j.PatternLayout
log4j.appender.info_appender.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss}-%t-[%p]\: %m%n
#將warn以上級別的日志輸出到按大小滾動文件
log4j.appender.warn_appender=org.apache.log4j.RollingFileAppender
log4j.appender.warn_appender.File=mm_logs/warn.log
log4j.appender.warn_appender.MaxFileSize=20000KB
log4j.appender.warn_appender.MaxBackupIndex=30
log4j.appender.warn_appender.layout=org.apache.log4j.PatternLayout
log4j.appender.warn_appender.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss}-%t-[%p]\: %m%n
#將erro以上級別的日志輸出到按大小滾動文件
log4j.appender.error_appender=org.apache.log4j.RollingFileAppender
log4j.appender.error_appender.File=mm_logs/error.log
log4j.appender.error_appender.MaxFileSize=20000KB
log4j.appender.error_appender.MaxBackupIndex=30
log4j.appender.error_appender.layout=org.apache.log4j.PatternLayout
log4j.appender.error_appender.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss}-%t-[%p]\: %m%n
#將fatal以上級別的日志輸出到按大小滾動文件
log4j.appender.fatal_appender=org.apache.log4j.RollingFileAppender
log4j.appender.fatal_appender.File=mm_logs/fatal.log
log4j.appender.fatal_appender.MaxFileSize=20000KB
log4j.appender.fatal_appender.MaxBackupIndex=30
log4j.appender.fatal_appender.layout=org.apache.log4j.PatternLayout
log4j.appender.fatal_appender.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss}-%t-[%p]\: %m%n
#將info以上級別日志輸出到按日期滾動文件,Logger級別繼承rootLogger配置
log4j.appender.all_appender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.all_appender.File=mm_logs/all.log    #文件位置
log4j.appender.all_appender.layout=org.apache.log4j.PatternLayout    
log4j.appender.all_appender.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss}-%t-[%p]\: %m%n
log4j.appender.all_appender.DatePattern='.'yyyy-MM-dd    #滾動日期格式 進入新的一天后,文件會被自動更名為,格式為all.log.2017.10.29
#將debug以上級別日志輸出到按日期滾動文件
log4j.appender.bd_data_appender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.bd_data_appender.File=mm_logs/data.log
log4j.appender.bd_data_appender.layout=org.apache.log4j.PatternLayout
log4j.appender.bd_data_appender.layout.ConversionPattern=%m%n
log4j.appender.bd_data_appender.DatePattern='.'yyyy-MM-dd

# ===================================================================================
#設置相應包的級別
log4j.logger.com.opensymphony.xwork2=error
log4j.logger.org.apache.commons.httpclient=off
log4j.logger.org.apache.struts2=info

log4j.logger.org.springframework=info
log4j.logger.org.springframework.security=info
log4j.logger.org.springframework.web.filter.CommonsRequestLoggingFilter=warn
log4j.logger.org.quartz=warn

log4j.logger.org.hibernate.type=off
log4j.logger.org.hibernate.ps.PreparedStatementCache=info
log4j.appender.logfile.encoding=UTF-8

四、java代碼中使用Log4j

Logger就是java代碼中的Logger,如:
public Logger log=Logger.getLogger(Log4jTest.class)
Logger的名字是Logger.getLogger()方法的參數,如果參數為所在的類,Log4j會取把類名作為Logger的名稱,如com.hello.world.Log4jTest。
命名規則:一般以類名作為Logger的名稱,名字類似java中的包名,大小寫敏感,用點分開且具有繼承關系。在log4j.properties中,通過名稱來配置Logger的屬性。
下面是Log4j的一個簡單例子:

package com.hello.world;
import org.apache.log4j.Logger;
public class Log4jTest{
    public static Logger log=Logger.getLogger(Log4jTest.class);
    public static void main(String[] args){
        log.debug("debug信息");
        log.info("info信息");
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM