log4j配置日志系统成功 (转)
.引言:
《log4j相比System.out的優(yōu)勢(shì)》(自己blog中的文章)
??? Log4j就是幫助開(kāi)發(fā)人員進(jìn)行日志輸出管理的API類庫(kù)。它最重要的特點(diǎn)就可以配置文件靈活的設(shè)置日
志信息的優(yōu)先級(jí)、日志信息的輸出目的地以及日志信息的輸出格式。
??? Log4j除了可以記錄程序運(yùn)行日志信息外還有一重要的功能就是用來(lái)顯示調(diào)試信息。
??? 程序員經(jīng)常會(huì)遇到脫離java ide環(huán)境調(diào)試程序的情況,這時(shí)大多數(shù)人會(huì)選擇使用System.out.println
語(yǔ)句輸出某個(gè)變量值的方法進(jìn)行調(diào)試。這樣會(huì)帶來(lái)一個(gè)非常麻煩的問(wèn)題:一旦哪天程序員決定不要顯示這
些System.out.println的東西了就只能一行行的把這些垃圾語(yǔ)句注釋掉。若哪天又需調(diào)試變量值,則只能
再一行行去掉這些注釋恢復(fù)System.out.println語(yǔ)句。
??? 使用log4j可以很好的處理類似情況。
2)log4j——一個(gè)讓我發(fā)愁了一段時(shí)間的東東:
?? ?12月份的時(shí)候fengy讓配置log4j,自己折騰了一個(gè)星期都沒(méi)弄出來(lái),并且很不明白到底是哪個(gè)環(huán)
節(jié)出問(wèn)題了。因?yàn)楫?dāng)時(shí)對(duì)相對(duì)路徑,常用接口等都不是很了解,wangwm配出來(lái)后,還是不知道自己的為什
么跑不起來(lái)。
?? ?現(xiàn)在回頭想想,一直沒(méi)有進(jìn)展,是因?yàn)?#xff08;a)沒(méi)有java.io的知識(shí);(b)沒(méi)有java相對(duì)路徑,絕
對(duì)路徑的知識(shí);(c)根本不理解要完成配置,必須完成哪些工作。
?? ?當(dāng)時(shí)弄不出來(lái),一直就停留在.java文件中的“PropertyConfigurator.configure
(myfile.getPath());”這行代碼里了,當(dāng)時(shí)無(wú)論怎么都讀不到log4j.properties文件,想了很多辦法,
包括查如何讀取屬性文件,如果用相對(duì)路徑讀取屬性文件,等等。但這些都是霧里看花,本質(zhì)沒(méi)弄清楚,
查再多的細(xì)節(jié)都不至于事。
?? ?現(xiàn)在總算對(duì)log4j的配置有了一點(diǎn)認(rèn)識(shí)了!
2.首先分清在各個(gè)環(huán)境下配置log4j應(yīng)完成什么事情:
1)java工程環(huán)境:
jdk1.4之后就集成了日志功能,D:\Program Files\Java\jre1.5.0_04\lib目錄下有l(wèi)ogging.properties
文件,如果要使用日志,直接使用或者修改這個(gè)logging.properties屬性文件就可以了!
2)在tomcat中用log4j配置日志系統(tǒng):
a)
第一步:下載log4j.jar,并把log4j.jar放入$CATALINA_HOME/common/lib.
第二步:寫(xiě)配置文件log4j.properties:
#log4j.properties
log4j.rootLogger=warn, A1,warnlog
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
# Print the date in ISO 8601 format
log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
log4j.appender.warnlog=org.apache.log4j.FileAppender ?
log4j.appender.warnlog.MaxFileSize=50000KB? ?
log4j.appender.warnlog.MaxBackupIndex=0? ?
log4j.appender.warnlog.file=F:/UserWorkSpace/jiangcm/logs/warn.html ?
log4j.appender.warnlog.layout=org.apache.log4j.HTMLLayout ?
log4j.appender.warnlog.layout.ConversionPattern=%d?? %X?? %-5p???? %m%n? ?
log4j.logger.org.apache=warn
第三步:在目錄“F:/UserWorkSpace/jiangcm/logs”下新建warn.html文件;
第四步:把該log4j.properties文件放到$CATALINA_HOME/common/classes/目錄下.
第五步:重啟tomcat.
ok,現(xiàn)在就已經(jīng)在tomcat中配置好log4j了。
b)如何使用?——在.java文件中得到一個(gè)Logger對(duì)象,然后就可以直接輸出日志了。如下例子所示:
//Bar.java
package com.foo;
import org.apache.log4j.Logger;
public class Bar {
static Logger logger = Logger.getLogger(Bar.class);
public void doIt() {
logger.debug("there is a debug...");
logger.info("there is a info...");
logger.warn("there is a warning...");
}
}
ok!也就是說(shuō)在tomcat中配置,只需要把log4j.jar和log4j.properties分別放到$CATALINA_HOME/common/
的lib和classes下就ok了!不需要再做別的設(shè)置,在.java中直接使用即可。
3)在tomcat的webapp中配置log4j:也就是配置單個(gè)的webapp。
這個(gè)就有點(diǎn)麻煩了!因?yàn)樵谡麄€(gè)tomcat中配置,tomcat會(huì)自動(dòng)讀入log4j.properties;但是在webapp中需
要寫(xiě)一個(gè)Servlet,初始化log4j,并且在web.xml中設(shè)置給servlet為tomcat啟動(dòng)時(shí)也自動(dòng)啟動(dòng)。
這種方法自己還沒(méi)有實(shí)驗(yàn)成功,不過(guò)看過(guò)wangwm配置成功了。
不過(guò)大致的步驟都是一樣的,大概有以下幾步吧:
第一步:下載log4j.jar,并把log4j.jar放入webappname/WEB-INF/classes/lib.
第二步:寫(xiě)配置文件log4j.properties:
注:
解決log4j輸出的日志文件的位置的配置問(wèn)題
http://wangluwww.spaces.live.com/blog/
我一直希望自己的web應(yīng)用的配置能夠簡(jiǎn)化,最好的方式就是打個(gè)包后扔哪都能用,即使非得再做一些配
置的話,也希望只是一些連接池的配置信息。這個(gè)目標(biāo)在現(xiàn)在手頭的這個(gè)項(xiàng)目中也幾乎達(dá)到了,除了log
文件的位置。
在log4j的配置文件中對(duì)于log輸出的路徑一向都是使用絕對(duì)路徑,這樣就導(dǎo)致在不同的機(jī)器上部署時(shí)都得
重新定義一下log文件的輸出位置。雖說(shuō)費(fèi)時(shí)不多,可對(duì)于我這種寧可少一事,不愿多一事的人來(lái)說(shuō),總
是覺(jué)得有點(diǎn)郁悶。
踏破鐵鞋無(wú)覓,得來(lái)不費(fèi)功夫。不經(jīng)意見(jiàn)看到了一個(gè)文檔,介紹說(shuō)log4j的配置文件支持windows的環(huán)境變
量,格式類似velocity:${env},ok,問(wèn)題解決:
一般來(lái)說(shuō)我們會(huì)將一些初始化的信息放到web.xml中,以便在系統(tǒng)啟動(dòng)時(shí)就運(yùn)行。循此思路,將log文件的
位置放到webapp下面的任意處,如webapp/WEB-INF/conf/logs下面,則可以在log4j.properties文件中做
如下定義:
log4j.appender.R.File=${webappHome}/WEB-INF/conf/logs/sysout.log
其中的${webappHome}即是通過(guò)System.setProperty("webappHome", webappHome);實(shí)現(xiàn)的,此操作可通過(guò)
一初始的servlet進(jìn)行,具體方法略。
第四步:把該log4j.properties文件放到WEB-INF/classes/目錄下.
第五步:寫(xiě)一個(gè)初始化的servlet;
第六步:在web.xml中配置該servlet,并設(shè)置為自動(dòng)啟動(dòng);
第七步:重啟tomcat.
具體做的時(shí)候可以參考以下資料:
竹筍炒肉 Log4J學(xué)習(xí)筆記(1)(2)(3)
http://hedong.3322.org/archives/000193.html
http://hedong.3322.org/archives/000195.html
http://hedong.3322.org/archives/000197.html
轉(zhuǎn)載于:https://www.cnblogs.com/cy163/archive/2009/09/21/1571053.html
總結(jié)
以上是生活随笔為你收集整理的log4j配置日志系统成功 (转)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 关于tsk和mbx
- 下一篇: 《XNA高级编程:Xbox 360和Wi