Log4j的學習--Log4j 配置文件

1、log4j配置概述

log4j有兩種配置文件,log4j.propertieslog4j.xml。因爲log4j是比較簡單的組件,所以建議使用log4j.properties

如果你把log4j放到項目的src下(即放到classes下),並且命名爲log4j.properties,那麼log4j會自動加載這個配置文件,這也是我們最爲常用的方式。

 

2、根日誌器

在配置文件中,需要配置名爲log4j.rootLogger的日誌器,它就是根日誌器。其他的日誌器都是根日誌器的子日誌器,會繼承根日誌器的目的地,以及級別等。

log4j.properties

log4j.rootLogger=DEBUG,A1

log4j.appender.A1=org.apache.log4j.ConsoleAppender

log4j.appender.A1.layout=org.apache.log4j.SimpleLayout

對上面進行解釋:

 log4j.rootLogger表示根日誌器,DEBUG是指定根日誌器的輸出級別,只要大於等於DEBUG級別的日誌就可以輸出。A1是說明目的地(Appender)的名稱;

 log4j.appender.A1表示目的地,org.apache.log4j.ConsoleAppender表示目的地爲控制檯目的地,即輸出結果在控制檯上顯示;

 log4j.appender.A1.layout表示A1這個目的地的格式化器,org.apache.log4j.SimpleLayout表示簡化格式化器。

然後我們在Java中就可以這樣子寫了:

public void fun1() {
		Logger log = Logger.getLogger(Demo1.class);
		log.debug("Hello");
}

3、其他日誌器

當然,也可以去配置其他的日誌器,語法如下:

log4j.rootLogger=DEBUG,A1

log4j.logger.com.luowg=WARN,A1

log4j.appender.A1=org.apache.log4j.ConsoleAppender

log4j.appender.A1.layout=org.apache.log4j.SimpleLayout

  我們不只配置了一個根日誌器,還配置了一個名稱爲com.chj的日誌器。繼承關係你是懂得對吧。所有日誌器如果名稱是以com.chj前綴的,那麼都會繼承上面的配置,如果不是,那麼繼承的就是root日誌器了。

我們下面對配置文件中的名詞進行解釋,有一部分是從網上借鑑過來的:

1、Appender

Appender是用來指定輸出目標的類,你可以叫它目的地。上面我們使用的ConsoleAppender就是用來向控制檯輸出的目的地。常用的目的地有:

 ConsoleAppender:向控制檯輸出日誌;

 FileAppender:向文件輸出日誌

 DailyRollingFileAppender:向文件輸出日誌,每天一個日誌文件;

 RollingFileAppender:向文件輸出日誌,當文件大小達到指定大小後,生成新文件;

 

ConsoleAppender的目標是控制檯!這也不多做解釋

log4j.rootLogger=DEBUG,A1

log4j.appender.A1=org.apache.log4j.ConsoleAppender

log4j.appender.A1.layout=org.apache.log4j.SimpleLayout

 

FileAppender的目標是磁盤文件

log4j.rootLogger=DEBUG,A1

log4j.appender.A1=org.apache.log4j.FileAppender

log4j.appender.A1.File=log.txt

log4j.appender.A1.Append=true

log4j.appender.A1.layout=org.apache.log4j.SimpleLayout

 

RollingFileAppenderFileAppender的子類

它的作用是當日志文件大小超出文件大小大限時,會把日誌文件轉換成備份文件,然後再生成一個新的日誌文件。

例如日誌文件名爲log.txt,設置文件大小上限爲1KB,當log.txt文件的大小超出了1KB後,把log.txt的名稱轉換成log.txt.1,然後再生成一個log.txt,新的日誌會寫入到新的log.txt文件中。當log.txt的大小再次達到1KB時,把log.txt.1名稱修改成log.txt.2,把log.txt修改成log.txt.1,然後再生成一個新的log.txt文件。

還可以設置文件的個數,當設置備份文件的個數爲3時,表示最多可以有3個文件。當文件達到3後,再次達到1KB時,那麼會刪除最後一個文件。例如當前已經存在log.txtlog.txt.1log.txt.2,這時如果log.txt又達到了1KB時,那麼刪除log.txt.2,然後把log.txt.1修改成log.txt.2,再把log.txt修改成log.txt.1,然後再創建log.txt文件。

log4j.rootLogger=DEBUG,A1

log4j.appender.A1=org.apache.log4j.RollingFileAppender

log4j.appender.A1FILE.File=log.txt

log4j.appender.A1.MaxFileSize=1KB

log4j.appender.A1.MaxBackupIndex=3

log4j.appender.A1.layout=org.apache.log4j.SimpleLayout

 

DailyRollingFileAppender會根據設定的時間頻率生成備份文件。

 當時間頻率爲yyyy-MM:按月生成備份文件;

 當時間頻率爲yyyy-ww:按周生成備份文件;

 當時間頻率爲yyyy-MM-dd:按天生成備份文件;

 當時間頻率爲yyyy-MM-dd-a:每天生成兩次備份;

 當時間頻率爲yyyy-MM-dd-HH:按小時生成備份文件;

 當時間頻率爲yyyy-MM-dd-HH-mm:按分鐘生成備份文件。

 

log4j.rootLogger=DEBUG,A1

log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender

log4j.appender.A1.File=log.txt

log4j.appender.A1.DatePattern='.'yyyy-MM-dd

log4j.appender.A1.layout=org.apache.log4j.SimpleLayout

 

2、Layout

 

Layout種類

  我們需要給目的地指定格式化器,這樣目的地就可以按照格式化器指定的格式來輸出日誌信息了。我們剛剛一直都在使用SimpleLayout格式化器,而我們常用的格式化器是PatternLayout

 

PatternLayout

可以爲PatternLayout指定一個模板,目的地會按模板來輸出日誌信息。例如模板爲:hello: %m,其中%m是一個模式字符,下面介紹一下模式字符:

 %m:信息本身;

 %c:日誌器的名稱;

 %d:日期,還可以指定日期的格式,例如:%d{yyyy-MM-dd HH:mm:ss}

 %p:日誌級別;

 %n:換行;

 %t:當前線程;

 %l:輸出日誌的Java類相關信息。

 

web項目中的配置

log4j.rootLogger=INFO,c1, f1

 

log4j.appender.c1=org.apache.log4j.ConsoleAppender

log4j.appender.c1.layout=org.apache.log4j.PatternLayout

log4j.appender.c1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%p] %m [%t] %c [%l]%n

 

log4j.appender.f1.File=${catalina.home}/logs/myproject.txt

log4j.appender.f1=org.apache.log4j.DailyRollingFileAppender

log4j.appender.f1.layout=org.apache.log4j.PatternLayout

log4j.appender.f1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%p] %m [%t] %c [%l]%n

 

下面這個是我的配置文件,對其中都加了註釋說明的了:

#debug 調試,用來調試程序的bug。
#根日誌器。其他的日誌器都是根日誌器的子日誌器,會繼承根日誌器的目的地,以及級別等
#只要大於等於INFO級別的日誌就可以輸出。c1和A1,f1是說明目的地(Appender)的名稱;
log4j.rootLogger=INFO,c1,A1,f1

#ConsoleAppender日誌輸出到控制檯
log4j.appender.c1=org.apache.log4j.ConsoleAppender

#表示c1這個目的地的格式化器,org.apache.log4j.PatternLayout是我們常用的格式化器
log4j.appender.c1.layout=org.apache.log4j.PatternLayout
log4j.appender.c1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%p] %m [%t] %c [%l]%n

#RollingFileAppender是FileAppender的子類,
#它的作用是當日志文件大小超出文件大小大限時,會把日誌文件轉換成備份文件,然後再生成一個新的日誌文件。
log4j.appender.A1=org.apache.log4j.RollingFileAppender 

#:指定日誌消息的輸出最低層次。
log4j.appender.A1.Threshold=info

#:默認值是true,意謂着所有的消息都會被立即輸出。
log4j.appender.A1.ImmediateFlush=true

log4j.appender.A1.File=d\://logs/log.txt 
# 在日誌文件到達該大小時,將會自動滾動,即將原來的內容移到log.txt.1文件。
log4j.appender.A1.MaxFileSize=1KB 

#指定可以產生的滾動文件的最大數。 
log4j.appender.A1.MaxBackupIndex=3 
log4j.appender.A1.layout=org.apache.log4j.SimpleLayout 

#DailyRollingFileAppender會根據設定的時間頻率生成備份文件。
log4j.appender.f1=org.apache.log4j.DailyRollingFileAppender

#:指定日誌消息的輸出最低層次。
log4j.appender.f1.Threshold=info

#:默認值是true,意謂着所有的消息都會被立即輸出。
log4j.appender.f1.ImmediateFlush=true
#log4j.appender.f1.File=/WEB-INF/logs/file.log
log4j.appender.f1.File=d://logs/file.log

#DatePattern='.'yyyy-ww:每週滾動一次文件,即每週產生一個新的文件。當然也可以指定按月、周、天、時和分
#即對應的格式如下:
	#'.'yyyy-MM: 每月
	#'.'yyyy-ww: 每週 
	#'.'yyyy-MM-dd: 每天
	#'.'yyyy-MM-dd-a: 每天兩次
	#'.'yyyy-MM-dd-HH: 每小時
	#'.'yyyy-MM-dd-HH-mm: 每分鐘
log4j.appender.f1.DatePattern='.'yyyy-MM-dd 
log4j.appender.f1.layout=org.apache.log4j.PatternLayout
log4j.appender.f1.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss} [%p] %m [%t] %c [%l]%n


 

 

 



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章