Log4j ( Log for Java ) 是 Apache 下的一個(gè)開源項(xiàng)目,通過 Log4j,可以將程序運(yùn)行的信息輸送到指定的目的地。這個(gè)目的地可以是控制臺(tái)、文件、郵箱等。
Log4j 支持兩種格式的文件配置,即 properties 和 xml 兩種格式的文件。下面將要介紹的是采用 properties 格式的配置。
① [ 配置日志級(jí)別和輸出源 ]
log4j.rootLogger = 級(jí)別,輸出源1,輸出源2 … …
日志信息優(yōu)先級(jí)別 : ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF
常用優(yōu)先級(jí)別 : DEBUG < INFO < WARN < ERROR
- DEBUG : 程序的調(diào)試信息
- INFO : 程序的一般信息,例如,用戶的登錄、登出,方法執(zhí)行成功信息等
- WARN : 程序的警告信息
- ERROR : 程序的嚴(yán)重錯(cuò)誤信息,例如,程序的執(zhí)行拋出異常
Tips : 只有當(dāng)日志信息的優(yōu)先級(jí)別大于等于配置的日志信息級(jí)別,日志信息才會(huì)被記錄到日志。
日志輸出源 :
- 日志輸出源的個(gè)數(shù)可以是一個(gè),也可以是多個(gè),多個(gè)輸出源的時(shí)候,輸出源與輸出源之間用逗號(hào)分隔
- 日志輸出源的名字可以根據(jù)需要,自定義起名
② [ 指定輸出源輔助類 ]
log4j.appender.輸出源名稱 = Appender.class
常用的 Appender ( 在 log4j-version.jar 的 org.apache.log4j 包下 ) :
1. org.apache.log4j.FileAppender(文件)
2. org.apache.log4j.ConsoleAppender(控制臺(tái))
3. org.apache.log4j.DailyRollingFileAppender(每天產(chǎn)生一個(gè)日志文件)
4. org.apache.log4j.RollingFileAppender(文件大小到達(dá)指定尺寸的時(shí)候產(chǎn)生一個(gè)新的文件)
③ [ 指定輸出源文件存放路徑 ]
log4j.appender.輸出源名稱.file = path ( 日志具體存放路徑 )
④ [ 指定輸出源文件的格式布局 ]
log4j.appender.輸出源名稱.layout = Layout.class
常用的 Layout ( 在 log4j-version.jar 的 org.apache.log4j 包下 ) :
1. org.apache.log4j.SimpleLayout ( 簡(jiǎn)單的布局方式,含日志信息的級(jí)別和信息 )
2. org.apache.log4j.PatternLayout ( 可自定義的布局模式 )
3. org.apache.log4j.HTMLLayout ( 以 HTML 方式布局 )
⑤ [ 自定義布局模式,可選 ]
log4j.appender.輸出源名稱.layout.conversionPattern
%p : 輸出日志信息優(yōu)先級(jí),即DEBUG,INFO,WARN,ERROR,F(xiàn)ATAL …
%d : 輸出日志時(shí)間點(diǎn)的日期或時(shí)間,默認(rèn)格式為ISO8601,也可以在其后指定格式,例如:%d{yyy-MMM-dd HH:mm:ss},輸出類似:2012-10-10 12:20:18
%r : 輸出自應(yīng)用啟動(dòng)到輸出該log信息耗費(fèi)的毫秒數(shù)
%c : 輸出日志信息所屬的類,通常就是所在類的全名
%t : 輸出產(chǎn)生該日志事件的線程名
%l : 輸出日志事件的發(fā)生位置
%x : 輸出和當(dāng)前線程相關(guān)聯(lián)的信息
%% : 輸出一個(gè)"%"字符
%F : 輸出日志消息產(chǎn)生時(shí)所在的文件名稱
%L : 輸出代碼中的行號(hào)
%m : 輸出代碼中指定的消息,產(chǎn)生的日志具體信息
%n : 換行
環(huán)境 : JDK 1.6,Eclipse 3.6,Maven 3.0.4,log4j 1.2.16,mail 1.4.4
項(xiàng)目結(jié)構(gòu) :
注 : 此處配置 pom.xml 是使用 maven 來管理 jar 包,如果你沒有使用 maven,則需手動(dòng)導(dǎo)入相關(guān) jar 包。
注 : 如果在 log4j.properties 中配置了日志信息發(fā)送到郵箱,即將上面的 log4j.properties 配置中的 # Email log 下面的注釋 ( properties 文件中 ' # ' 是行注釋 )
全部取消的話,則需要在配置中添加一個(gè)輸出源,同樣的,這個(gè)輸出源的名稱是自定義的,在這里,如果我去掉注釋,則需要多配一個(gè)名稱叫 mail 的輸出源,除此之外,
還需要添加 java 的 mail 的 jar 包,否則,后臺(tái)將拋出 java.lang.ClassNotFoundException 的異常信息。