鍘熸枃浣滆咃細澶╂墠 Kylin欏圭洰灝忕粍
log4j綆浠?/font>
綆鍗曠殑璇?span lang="EN-US">log4j灝辨槸甯姪寮鍙戜漢鍛樿繘琛屾棩蹇楄緭鍑虹鐞嗙殑API綾誨簱銆傚畠鏈閲嶈鐨勭壒鐐瑰氨
鍙互閰嶇疆鏂囦歡鐏墊椿鐨勮緗?/span>鏃ュ織淇℃伅鐨勪紭鍏堢駭銆佹棩蹇椾俊鎭殑杈撳嚭鐩殑鍦頒互鍙婃棩蹇椾俊鎭殑杈撳嚭鏍煎紡銆?/span>
Log4j闄や簡鍙互璁板綍紼嬪簭榪愯鏃ュ織淇℃伅澶栬繕鏈変竴閲嶈鐨勫姛鑳藉氨鏄敤鏉?/span>鏄劇ず璋冭瘯淇℃伅銆傜▼搴忓憳緇忓父浼氶亣鍒拌劚紱?span lang="EN-US">java ide鐜璋冭瘯紼嬪簭鐨勬儏鍐碉紝榪欐椂澶у鏁頒漢浼氶夋嫨浣跨敤System.out.println璇彞杈撳嚭鏌愪釜鍙橀噺鍊肩殑鏂規硶榪涜璋冭瘯銆傝繖鏍蜂細甯︽潵涓涓潪甯擱夯鐑︾殑闂? 棰橈細涓鏃﹀摢澶╃▼搴忓憳鍐沖畾涓嶈鏄劇ず榪欎簺System.out.println鐨勪笢瑗夸簡灝卞彧鑳戒竴琛岃鐨勬妸榪欎簺鍨冨溇璇彞娉ㄩ噴鎺夈傝嫢鍝ぉ鍙堥渶璋冭瘯鍙橀噺鍊鹼紝鍒欏彧鑳藉啀 涓琛岃鍘繪帀榪欎簺娉ㄩ噴鎭㈠System.out.println璇彞銆備嬌鐢╨og4j鍙互寰堝ソ鐨勫鐞嗙被浼兼儏鍐點?/span>
log4j浣跨敤鏂規硶
涓嬮潰浠嬬粛鐨勬槸log4j涓浜涚悊璁烘柟闈㈢殑鐭ヨ瘑錛岃鑰呰寰楁灟鐕ョ殑璇濆彲浠ヨ煩榪囨湰鑺傜洿鎺ラ槄璇葷涓夎妭瀹炰緥閮ㄥ垎銆?/span>
銆銆1銆佸畾涔夐厤緗枃浠?/span>
銆 棣? 鍏堜嬌鐢ㄩ厤緗枃浠跺皢浣挎垜浠殑搴旂敤紼嬪簭鏇村姞鐏墊椿閰嶇疆log鏃ュ織杈撳嚭鏂瑰紡鍖呮嫭杈撳嚭浼樺厛綰с佽緭鍑虹洰鐨勫湴銆佽緭鍑烘牸寮忋侺og4j鏀寔涓ょ閰嶇疆鏂囦歡鏍煎紡錛屼竴縐嶆槸XML 鏍煎紡鐨勬枃浠訛紝涓縐嶆槸Java鐗規ф枃浠秎og4j.properties錛堥敭=鍊鹼級銆備笅闈㈠皢浠嬬粛浣跨敤log4j.properties鏂囦歡浣滀負閰嶇疆鏂囦歡鐨勬柟 娉曪細
銆銆鈶?/span>閰嶇疆鏍筁ogger錛屽叾璇硶涓猴細0
銆銆log4j.rootLogger = [ level ] , appenderName, appenderName, …
銆銆鍏朵腑錛?span lang="EN-US">level 鏄棩蹇楄褰曠殑浼樺厛綰э紝鍒嗕負OFF銆丗ATAL銆丒RROR銆乄ARN銆両NFO銆丏EBUG銆丄LL鎴栬呰嚜瀹氫箟鐨勭駭鍒侺og4j寤鴻鍙嬌鐢ㄥ洓涓駭鍒紝浼? 鍏堢駭浠庨珮鍒頒綆鍒嗗埆鏄疎RROR銆乄ARN銆両NFO銆丏EBUG銆傞氳繃鍦ㄨ繖閲屽畾涔夌殑綰у埆錛屾偍鍙互鎺у埗鍒板簲鐢ㄧ▼搴忎腑鐩稿簲綰у埆鐨勬棩蹇椾俊鎭殑寮鍏熾傛瘮濡傚湪榪欓噷瀹? 涔変簡INFO綰у埆錛屽垯搴旂敤紼嬪簭涓墍鏈塂EBUG綰у埆鐨勬棩蹇椾俊鎭皢涓嶈鎵撳嵃鍑烘潵銆? appenderName灝辨槸鎸囧畾鏃ュ織淇℃伅杈撳嚭鍒板摢涓湴鏂廣傚彲鍚屾椂鎸囧畾澶氫釜杈撳嚭鐩殑鍦般?
銆銆鈶?/span>閰嶇疆鏃ュ織淇℃伅杈撳嚭鐩殑鍦癆ppender錛屽叾璇硶涓猴細
銆銆log4j.appender.appenderName = fully.qualified.name.of.appender.class
log4j.appender.appenderName.option1 = value1
…
log4j.appender.appenderName.option = valueN
銆銆鍏朵腑錛?/font>Log4j鎻愪緵鐨刟ppender鏈変互涓嬪嚑縐嶏細
org.apache.log4j.ConsoleAppender錛堟帶鍒跺彴錛夛紝
org.apache.log4j.FileAppender錛堟枃浠訛級錛?
org.apache.log4j.DailyRollingFileAppender錛堟瘡澶╀駭鐢熶竴涓棩蹇楁枃浠訛級錛?br />
org.apache.log4j.RollingFileAppender錛堟枃浠跺ぇ灝忓埌杈炬寚瀹氬昂瀵哥殑鏃跺欎駭鐢熶竴涓柊鐨勬枃浠訛級錛?
org.apache.log4j.WriterAppender錛堝皢鏃ュ織淇℃伅浠ユ祦鏍煎紡鍙戦佸埌浠繪剰鎸囧畾鐨勫湴鏂癸級
銆 鈶?/span>閰嶇疆鏃ュ織淇℃伅鐨勬牸寮忥紙甯冨眬錛夛紝鍏惰娉曚負錛?/span>
銆銆log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
log4j.appender.appenderName.layout.option1 = value1
…
log4j.appender.appenderName.layout.option = valueN
銆銆鍏朵腑錛?/font>Log4j鎻愪緵鐨刲ayout鏈変互涓嬪嚑縐嶏細
org.apache.log4j.HTMLLayout錛堜互HTML琛ㄦ牸褰㈠紡甯冨眬錛夛紝
org.apache.log4j.PatternLayout錛堝彲浠ョ伒媧誨湴鎸囧畾甯冨眬妯″紡錛夛紝
org.apache.log4j.SimpleLayout錛堝寘鍚棩蹇椾俊鎭殑綰у埆鍜屼俊鎭瓧絎︿覆錛夛紝
org.apache.log4j.TTCCLayout錛堝寘鍚棩蹇椾駭鐢熺殑鏃墮棿銆佺嚎紼嬨佺被鍒瓑絳変俊鎭級
銆銆Log4J閲囩敤綾諱技C璇█涓殑printf鍑芥暟鐨勬墦鍗版牸寮忔牸寮忓寲鏃ュ織淇℃伅錛屾墦鍗板弬鏁板涓嬶細 %m 杈撳嚭浠g爜涓寚瀹氱殑娑堟伅
銆銆%p 杈撳嚭浼樺厛綰э紝鍗矰EBUG錛孖NFO錛學ARN錛孍RROR錛孎ATAL
%r 杈撳嚭鑷簲鐢ㄥ惎鍔ㄥ埌杈撳嚭璇og淇℃伅鑰楄垂鐨勬縐掓暟
%c 杈撳嚭鎵灞炵殑綾葷洰錛岄氬父灝辨槸鎵鍦ㄧ被鐨勫叏鍚?
%t 杈撳嚭浜х敓璇ユ棩蹇椾簨浠剁殑綰跨▼鍚?
%n 杈撳嚭涓涓洖杞︽崲琛岀錛學indows騫沖彴涓?#8220;\r\n”錛孶nix騫沖彴涓?#8220;\n”
%d 杈撳嚭鏃ュ織鏃墮棿鐐圭殑鏃ユ湡鎴栨椂闂達紝榛樿鏍煎紡涓篒SO8601錛屼篃鍙互鍦ㄥ叾鍚庢寚瀹氭牸寮忥紝姣斿錛?d{yyy MMM dd HH:mm:ss,SSS}錛岃緭鍑虹被浼鹼細2002騫?0鏈?8鏃?/font> 22錛?0錛?8錛?21
%l 杈撳嚭鏃ュ織浜嬩歡鐨勫彂鐢熶綅緗紝鍖呮嫭綾葷洰鍚嶃佸彂鐢熺殑綰跨▼錛屼互鍙婂湪浠g爜涓殑琛屾暟銆備婦渚嬶細Testlog4.main(TestLog4.java:10)
銆銆2銆佸湪浠g爜涓嬌鐢↙og4j
銆銆鈶?/span>寰楀埌璁板綍鍣?/span>
銆銆浣跨敤Log4j錛岀涓姝ュ氨鏄幏鍙栨棩蹇楄褰曞櫒錛岃繖涓褰曞櫒灝嗚礋璐f帶鍒舵棩蹇椾俊鎭傚叾璇硶涓猴細
銆銆public static Logger getLogger( String name)
銆銆閫氳繃鎸囧畾鐨勫悕瀛楄幏寰楄褰曞櫒錛屽鏋滃繀瑕佺殑璇濓紝鍒欎負榪欎釜鍚嶅瓧鍒涘緩涓涓柊鐨勮褰曞櫒銆?span lang="EN-US">Name涓鑸彇鏈被鐨勫悕瀛楋紝姣斿錛?
銆銆static Logger logger = Logger.getLogger ( ServerWithLog4j.class.getName () )
銆銆鈶?/span>璇誨彇閰嶇疆鏂囦歡
銆銆褰撹幏寰椾簡鏃ュ織璁板綍鍣ㄤ箣鍚庯紝絎簩姝ュ皢閰嶇疆Log4j鐜錛屽叾璇硶涓猴細
BasicConfigurator.configure ()錛?鑷姩蹇熷湴浣跨敤緙虹渷Log4j鐜銆?br /> PropertyConfigurator.configure ( String configFilename) 錛氳鍙栦嬌鐢↗ava鐨勭壒鎬ф枃浠剁紪鍐欑殑閰嶇疆鏂囦歡銆?/font>
渚嬶細PropertyConfigurator.configure(".\\src\\log4j.properties")
銆銆DOMConfigurator.configure ( String filename ) 錛氳鍙朮ML褰㈠紡鐨勯厤緗枃浠躲?/font>
銆銆鈶?/span>鎻掑叆璁板綍淇℃伅錛堟牸寮忓寲鏃ュ織淇℃伅錛?/span>
銆銆褰撲笂涓や釜蹇呰姝ラ鎵ц瀹屾瘯錛屽氨鍙交鏉懼湴浣跨敤涓嶅悓浼樺厛綰у埆鐨勬棩蹇楄褰曡鍙ユ彃鍏ュ埌鎮ㄦ兂璁板綍鏃ュ織鐨勪換浣曞湴鏂癸紝鍏惰娉曞涓嬶細
銆銆Logger.debug ( Object message ) ;
Logger.info ( Object message ) ;
Logger.warn ( Object message ) ;
Logger.error ( Object message ) ;
log4j鑼冧緥紼嬪簭
涓嬮潰灝嗕嬌鐢ㄤ竴涓渶綆鍗曠殑鑼冧緥紼嬪簭鏉ヨ繘涓姝ヨ鏄?span lang="EN-US">log4j鐨勪嬌鐢ㄦ柟娉曘傜▼搴忎唬鐮佸涓嬶細
import org.apache.log4j.*;
public class LogTest {
static Logger logger = Logger.getLogger(LogTest.class.getName());
public static void main(String[] args) {
PropertyConfigurator.configure ( “.\\src\log4j.properties”)錛?/span>
logger.debug("Debug ...");
logger.info("Info ...");
logger.warn("Warn ...");
logger.error("Error ...");
}
}
紼嬪簭璇存槑錛?/font>
鈶?/span> static Logger logger = Logger.getLogger(LogTest.class.getName());灝辨槸鍒涘緩涓涓睘浜?/span>LogTest綾葷殑Logger瀵硅薄錛屽垱寤烘椂瑕佸憡鐭?/span>Logger浣犲綋鍓嶇殑Class鏄粈涔堛?/span>
鈶?/span> PropertyConfigurator.configure ( “log4j.properties”)灝辨槸璇翠嬌鐢ㄥ綋鍓嶅伐紼嬬洰褰曚笅鐨?/span>src鏂囦歡澶逛腑鐨?/span>log4j.properties鏂囦歡浣滀負閰嶇疆鏂囦歡銆傝嫢灝?/span>log4j.properties鏀懼湪宸ョ▼鏍圭洰褰曚笅涔熷彲涓嶅啓姝ゅ彞錛岀▼搴忎細鑷姩鎵懼埌閰嶇疆鏂囦歡銆?/span>
鈶?/span> logger.debug灝辨槸杈撳嚭debug鐨勪俊鎭紝logger.info灝辨槸杈撳嚭鎻愮ず淇℃伅錛?/span>logger.warn灝辨槸鏄劇ず璀﹀憡淇℃伅錛?/span>logger.error灝辨槸鏄劇ず閿欒淇℃伅銆?/span>
涓嬮潰鏄厤緗枃浠?/span>log4j.properties鐨勫唴瀹癸細
log4j.rootCategory=DEBUG, stdout錛?/span>R
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p (%F:%L) - %m%n
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=log.txt
log4j.appender.R.MaxFileSize=100KB
log4j.appender.R.MaxBackupIndex=1
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d{yyyy MMM dd HH:mm:ss} %-5p %c - %m%n
紼嬪簭璇存槑錛?/font>
鈶?/span> log4j.rootCategory=DEBUG, stdout錛?/span>R
灝辨槸璇存垜瑕佹樉紺烘墍鏈変紭鍏堟潈絳夋柤鍜岄珮浜?/span>Debug鐨勪俊鎭?br /> "stdout"錛?/span>”R”琛ㄧず鎴戝畾涔変簡涓や釜杈撳嚭绔?/span>(闅忎究浠涔堝悕瀛楅兘濂?/span>)銆?/span>
鈶?/span>涓嬮潰鐨勪笁琛岃stdout杈撳嚭绔叾瀹炴槸鏍囧噯杈撳嚭Console錛屼篃灝辨槸灞忓箷銆傝緭鍑虹殑鏍煎紡鏄?/span>PatternLayout銆傝漿鎹㈡柟寮忔槸%5p (%F:%L) - %m%n錛屽嵆鍓嶄簲鏍肩敤鏉ユ樉紺轟紭鍏堟潈錛屽啀鏄劇ず褰撳墠鐨勬枃浠跺悕錛屽姞褰撳墠鐨勮鏁般傛渶鍚庢槸logger.debug()鎴?/span>logger.info()鎴?/span>logger.warn()鎴?/span>logger.error()閲岀殑淇℃伅銆?/span>%n琛ㄧず鍥炶濺絀鴻銆?/span>
鈶?/span>鍐嶅姞涓婁笅闈㈠叚琛屽垯log淇℃伅涓嶅厜鏄劇ず鍦ㄥ睆騫曚笂錛岃屼笖灝嗚淇濆瓨鍦ㄤ竴涓彨"log.txt"鐨勬枃浠墮噷錛屾枃浠舵渶澶т負100KB銆傚鏋滄枃浠跺ぇ灝忚秴榪?/span>100KB錛屾枃浠朵細琚浠芥垚"log.txt.1"錛屾柊鐨?/span>"log.txt"緇х畫璁板綍log淇℃伅銆?/span>
鎺ヤ笅鏉ユ垜浠彲浠ユ敼鍙?/span>log4j.properties錛岃屼笉闇閲嶆柊緙栬瘧灝卞彲浠ユ帶鍒?/span>log淇℃伅鏄惁鏄劇ず銆?/span>log淇℃伅鐨勮緭鍑虹綾誨瀷銆佽緭鍑烘柟寮忋佽緭鍑烘牸寮忥紝絳夌瓑銆備婦渚嬪涓嬶細
鈶?/span>鍦?/span>log4j.properties鏂囦歡閲屾妸"log4j.rootCategory=DEBUG,stdout,R"鏀瑰啓鎴?/span>"log4j.rootCategory=OFF, stdout,R"錛岃繖鏍鋒墍鏈夌殑log淇℃伅閮戒笉浼氭樉紺轟簡錛涜В鍐充簡鏈枃寮濮嬫彁鍑虹殑闂銆?br /> 鈶?/span>鍦?/span>log4j.properties鏂囦歡閲屾妸"log4j.rootCategory=DEBUG,stdout,R"鏀瑰啓鎴?/span>"log4j.rootCategory=INFO, stdout,R"錛岃繖鏍峰彧鏄劇ずINFO, WARN, ERROR鐨?/span>log淇℃伅錛岃?/span>DEBUG淇℃伅涓嶄細琚樉紺猴紱
鍦?span lang="EN-US">web紼嬪簭涓嬌鐢╨og4j娉ㄦ剰闂
1銆?span style="font: 7pt 'Times New Roman';"> 鐢變簬jsp鎴杝ervlet鍦ㄦ墽琛岀姸鎬佹椂娌℃湁褰撳墠璺緞姒傚康錛屾墍鏈変嬌鐢?/span>PropertyConfigurator.configure錛?/span>String錛夎鍙ユ壘log4j.properties鏂囦歡鏃惰緇欏嚭鐩稿浜庡綋鍓?/span>jsp鎴?/span>servlet鐨勮礬寰勮漿鍖栨垚涓轟竴涓粷瀵圭殑鏂囦歡緋葷粺璺緞銆傛柟娉曟槸浣跨敤servletcontext.getrealpath(string)璇彞銆備緥錛?/span>
//寰楀埌褰撳墠jsp璺緞
String prefix = getServletContext().getRealPath("/");
//璇誨彇log4j.properties
PropertyConfigurator.configure(prefix+"\\WEB-INF\\log4j.properties");
2銆佺浉搴旂殑log4j.properties璁劇疆鏌愪釜灞炴ф椂涔熻鍦ㄧ▼搴忎腑璁劇疆緇濆璺緞銆備緥錛?/span>
log4j.appender.R.File灞炴ц緗棩蹇楁枃浠跺瓨鏀句綅緗傛垜浠彲浠ョ敤璇誨啓.properties閰嶇疆鏂囦歡鐨勬柟娉曡繘琛岀伒媧昏緗?/span>
log4e浣跨敤璇存槑
鍦ㄤ簡瑙d簡log4j鐨勫姛鑳藉悗錛屾垜浠偗瀹氫細鎴戜滑鐨勭▼搴忎腑緙栧啓涓浜?/span>Log4j鏃ュ織璁板綍銆傚浜庝嬌鐢?/span>Eclipse鐨勭▼搴忓憳Log4e灝嗘槸鎴戜滑鏈寰楀姏鐨?/span>log4j鏃ュ織緙栧啓鍔╂墜錛岀幇鍦ㄥ紑濮?/span>Log4e涔嬫梾銆?/span>
Log4e鏄竴涓厤璐圭殑Eclipse Plugin錛屽畠鍙府鍔╀綘鍦ㄤ綘鐨?/span>Java宸ョ▼涓揩閫熷姞鍏?/span>Log錛?/span> 鎴戜滑鍙互鍦?/span>http://log4e.jayefem.de/index.php/Download緗戠珯涓婁笅杞?/span>Log4e鏈鏂扮増鏈備笅杞藉悗灝嗙浉搴旀枃浠跺す鎷瘋礉鍒?/span>Eclipse鐨勬彃浠剁洰褰曚笅錛岄噸鏂?/span>Eclipse錛屽湪棣栭夐」涓細澶氬嚭涓涓?/span>Log4e閫夐」銆?/span>
Log4e鍙互鏈夊涓彃鍏?/span>Log涓轟竴涓柟娉曘佺被錛屽綋鐒朵篃鍙互鍦ㄥ綋鍓嶄綅緗彃鍏?/span>Log錛屽悓鏃跺叾涔熷彲浠ユ妸Sysout.out.println()鐨勮漿鎹負log錛涙墍鏈夌殑榪欎竴鍒囧彧闇瑕佷綘鐐圭偣榧犳爣鎴栬呮寜涓嬈″揩鎹烽敭錛屼笅闈㈡垜浠彧浠ヤ負涓涓柟娉曟彃鍏?/span>Log涓轟緥鏉ヨ瑙?/span>
鍦?/span>Java緙栬緫涓婁笅鏂囦腑鐐瑰嚮鍙抽敭錛岄夋嫨Log4E錛屼綘灝嗙湅鍒板涓嬬晫闈細
鐐瑰嚮Insert Log Statement For This Method錛屼綘灝嗙湅鍒伴獙璇侀〉闈細
Finish鍚庤繖鏃朵綘灝嗙湅鍒版彃鍏?/span>Log鍚庣殑鍑芥暟濡備笅錛?br />
Log4e鏇村鐨勫疄渚嬪弬鐓?/span>http://log4e.jayefem.de