锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
1銆?Loggers
聽聽聽 Loggers緇勪歡鍦ㄦ緋葷粺涓鍒嗕負浜斾釜綰у埆錛欴EBUG銆両NFO銆乄ARN銆丒RROR鍜孎ATAL銆傝繖浜斾釜綰у埆鏄湁欏哄簭鐨勶紝DEBUG < INFO < WARN < ERROR < FATAL錛屾槑鐧借繖涓鐐瑰緢閲嶈錛岃繖閲孡og4j鏈変竴涓鍒欙細鍋囪Loggers綰у埆涓篜錛屽鏋滃湪Loggers涓彂鐢熶簡涓涓駭鍒玅姣擯楂橈紝鍒欏彲浠ュ惎鍔紝鍚﹀垯灞忚斀鎺夈?/p>
Java紼嬪簭涓句緥鏉ヨ錛?/strong>
//寤虹珛Logger鐨勪竴涓疄渚嬶紝鍛藉悕涓衡渃om.foo鈥?/p>
Logger聽 logger = Logger.getLogger("com.foo");
//璁劇疆logger鐨勭駭鍒傞氬父涓嶅湪紼嬪簭涓緗甽ogger鐨勭駭鍒備竴鑸湪閰嶇疆鏂囦歡涓緗?/p>
logger.setLevel(Level.INFO);
Logger barlogger = Logger.getLogger("com.foo.Bar");
//涓嬮潰榪欎釜璇鋒眰鍙敤錛屽洜涓篧ARN >= INFO
logger.warn("Low fuel level.");
//涓嬮潰榪欎釜璇鋒眰涓嶅彲鐢紝鍥犱負DEBUG < INFO
logger.debug("Starting search for nearest gas station.");
//鍛藉悕涓衡渃om.foo.bar鈥濈殑瀹炰緥barlogger浼氱戶鎵垮疄渚嬧渃om.foo鈥濈殑綰у埆銆傚洜姝わ紝涓嬮潰榪欎釜璇鋒眰鍙敤錛屽洜涓篒NFO >= INFO
barlogger.info("Located nearest gas station.");
//涓嬮潰榪欎釜璇鋒眰涓嶅彲鐢紝鍥犱負DEBUG < INFO
barlogger.debug("Exiting gas station search");聽
榪欓噷鈥滄槸鍚﹀彲鐢ㄢ濈殑鎰忔濇槸鑳藉惁杈撳嚭Logger淇℃伅銆?/strong>聽
聽聽聽 鍦ㄥLogger瀹炰緥榪涜鍛藉悕鏃訛紝娌℃湁闄愬埗錛屽彲浠ュ彇浠繪剰鑷繁鎰熷叴瓚g殑鍚嶅瓧銆備竴鑸儏鍐典笅寤鴻浠ョ被鐨勬墍鍦ㄤ綅緗潵鍛藉悕Logger瀹炰緥錛岃繖鏄洰鍓嶆潵璁叉瘮杈冩湁鏁堢殑Logger鍛藉悕鏂瑰紡銆傝繖鏍峰彲浠ヤ嬌寰楁瘡涓被寤虹珛鑷繁鐨勬棩蹇椾俊鎭紝渚夸簬綆$悊銆傛瘮濡傦細
static Logger logger = Logger.getLogger(ClientWithLog4j.class.getName());
2銆?Appenders
聽聽聽 紱佺敤涓庝嬌鐢ㄦ棩蹇楄姹傚彧鏄疞og4j鍏朵腑鐨勪竴涓皬灝忕殑鍦版柟錛孡og4j鏃ュ織緋葷粺鍏佽鎶婃棩蹇楄緭鍑哄埌涓嶅悓鐨勫湴鏂癸紝濡傛帶鍒跺彴錛圕onsole錛夈佹枃浠訛紙Files錛夈佹牴鎹ぉ鏁版垨鑰呮枃浠跺ぇ灝忎駭鐢熸柊鐨勬枃浠躲佷互嫻佺殑褰㈠紡鍙戦佸埌鍏跺畠鍦版柟絳夌瓑銆?/p>
鍏惰娉曡〃紺轟負錛?/p>
org.apache.log4j.ConsoleAppender錛堟帶鍒跺彴錛夛紝
org.apache.log4j.FileAppender錛堟枃浠訛級錛?br />org.apache.log4j.DailyRollingFileAppender錛堟瘡澶╀駭鐢熶竴涓棩蹇楁枃浠訛級錛宱rg.apache.log4j.RollingFileAppender錛堟枃浠跺ぇ灝忓埌杈炬寚瀹氬昂瀵哥殑鏃跺欎駭鐢熶竴涓柊鐨勬枃浠訛級錛?br />org.apache.log4j.WriterAppender錛堝皢鏃ュ織淇℃伅浠ユ祦鏍煎紡鍙戦佸埌浠繪剰鎸囧畾鐨勫湴鏂癸級閰嶇疆鏃朵嬌鐢ㄦ柟寮忎負錛?/p>
log4j.appender.appenderName = fully.qualified.name.of.appender.class
log4j.appender.appenderName.option1 = value1
鈥?/p>
log4j.appender.appenderName.option = valueN
榪欐牱灝變負鏃ュ織鐨勮緭鍑烘彁渚涗簡鐩稿綋澶х殑渚垮埄銆?/p>
3銆?Layouts
聽聽聽 鏈夋椂鐢ㄦ埛甯屾湜鏍規嵁鑷繁鐨勫枩濂芥牸寮忓寲鑷繁鐨勬棩蹇楄緭鍑恒侺og4j鍙互鍦ˋppenders鐨勫悗闈㈤檮鍔燣ayouts鏉ュ畬鎴愯繖涓姛鑳姐侺ayouts鎻愪緵浜嗗洓縐嶆棩蹇楄緭鍑烘牱寮忥紝濡傛牴鎹瓾TML鏍峰紡銆佽嚜鐢辨寚瀹氭牱寮忋佸寘鍚棩蹇楃駭鍒笌淇℃伅鐨勬牱寮忓拰鍖呭惈鏃ュ織鏃墮棿銆佺嚎紼嬨佺被鍒瓑淇℃伅鐨勬牱寮忕瓑絳夈?/p>
鍏惰娉曡〃紺轟負錛?/p>
org.apache.log4j.HTMLLayout錛堜互HTML琛ㄦ牸褰㈠紡甯冨眬錛夛紝
org.apache.log4j.PatternLayout錛堝彲浠ョ伒媧誨湴鎸囧畾甯冨眬妯″紡錛夛紝
org.apache.log4j.SimpleLayout錛堝寘鍚棩蹇椾俊鎭殑綰у埆鍜屼俊鎭瓧絎︿覆錛夛紝
org.apache.log4j.TTCCLayout錛堝寘鍚棩蹇椾駭鐢熺殑鏃墮棿銆佺嚎紼嬨佺被鍒瓑絳変俊鎭級閰嶇疆鏃朵嬌鐢ㄦ柟寮忎負錛?/p>
聽聽聽聽 log4j.appender.appenderName.layout =聽聽聽聽聽聽 fully.qualified.name.of.layout.class
聽聽聽聽聽log4j.appender.appenderName.layout.option1 = value1
聽聽聽聽 鈥?br />聽聽聽聽 log4j.appender.appenderName.layout.option = valueN
聽
聽聽聽 浠ヤ笂鏄粠鍘熺悊鏂歸潰璇存槑Log4j鐨勪嬌鐢ㄦ柟娉曪紝鍦ㄥ叿浣揓ava緙栫▼浣跨敤Log4j鍙互鍙傜収浠ヤ笅紺轟緥錛?br />1銆?寤虹珛Logger瀹炰緥錛?br />聽聽聽 璇硶琛ㄧず錛歱ublic static Logger getLogger( String name)
聽聽聽 瀹為檯浣跨敤錛歴tatic Logger logger = Logger.getLogger聽聽 (ServerWithLog4j.class.getName ()) ;
2銆?璇誨彇閰嶇疆鏂囦歡錛?/strong>
聽聽聽 鑾峰緱浜哃ogger鐨勫疄渚嬩箣鍚庯紝鎺ヤ笅鏉ュ皢閰嶇疆Log4j浣跨敤鐜錛?br />聽聽聽 璇硶琛ㄧず錛?br />聽聽聽 BasicConfigurator.configure()錛氳嚜鍔ㄥ揩閫熷湴浣跨敤緙虹渷Log4j鐜銆?br />聽聽聽 PropertyConfigurator.configure(String configFilename)錛氳鍙栦嬌鐢↗ava鐨勭壒鎬ф枃浠剁紪鍐欑殑閰嶇疆鏂囦歡銆?br />聽聽聽 DOMConfigurator.configure(String filename)錛氳鍙朮ML褰㈠紡鐨勯厤緗枃浠躲?br />聽聽聽 瀹為檯浣跨敤錛歅ropertyConfigurator.configure("ServerWithLog4j.properties");
3銆?鎻掑叆鏃ュ織淇℃伅
聽聽聽 瀹屾垚浜嗕互涓婅繛涓楠や互鍚庯紝涓嬮潰灝卞彲浠ユ寜鏃ュ織鐨勪笉鍚岀駭鍒彃鍏ュ埌浣犺璁板綍鏃ュ織鐨勪換浣曞湴鏂逛簡銆?br />聽聽聽 璇硶琛ㄧず錛?br />聽聽聽 Logger.debug(Object message);
聽聽聽 Logger.info(Object message);
聽聽聽 Logger.warn(Object message);
聽聽聽 Logger.error(Object message);
聽聽聽 瀹為檯浣跨敤錛歭ogger.info("ServerSocket before accept: " + server);
聽
聽聽聽 鍦ㄥ疄闄呯紪紼嬫椂錛岃浣縇og4j鐪熸鍦ㄧ郴緇熶腑榪愯浜嬪厛榪樿瀵歸厤緗枃浠惰繘琛屽畾涔夈傚畾涔夋楠ゅ氨鏄Logger銆丄ppender鍙奓ayout鐨勫垎鍒嬌鐢紝鍏蜂綋濡備笅錛?br />1銆?閰嶇疆鏍筁ogger錛屽叾璇硶涓猴細
聽聽聽 log4j.rootLogger = [ level ] , appenderName, appenderName, 鈥?br />榪欓噷level鎸嘗ogger鐨勪紭鍏堢駭錛宎ppenderName鏄棩蹇椾俊鎭殑杈撳嚭鍦幫紝鍙互鍚屾椂鎸囧畾澶氫釜杈撳嚭鍦般傚錛歭og4j.rootLogger= INFO,A1,A2
2銆?閰嶇疆鏃ュ織淇℃伅杈撳嚭鐩殑鍦?/strong>錛屽叾璇硶涓猴細
聽聽聽 log4j.appender.appenderName = fully.qualified.name.of.appender.class
聽聽聽 鍙互鎸囧畾涓婇潰鎵榪頒簲涓洰鐨勫湴涓殑涓涓?br />3銆?閰嶇疆鏃ュ織淇℃伅鐨勬牸寮?/strong>錛屽叾璇硶涓猴細
聽聽聽 log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
聽聽聽 榪欓噷涓婇潰涓変釜姝ラ鏄鍓嶉潰Log4j緇勪歡璇存槑鐨勪竴涓畝鍖栵紱涓嬮潰緇欏嚭涓涓叿浣撻厤緗緥瀛愶紝鍦ㄧ▼搴忎腑鍙互鍙傜収鎵ц錛?br />聽聽聽 log4j.rootLogger=INFO,A1
聽聽聽 log4j.appender.A1=org.apache.log4j.ConsoleAppender
聽聽聽聽log4j.appender.A1.layout=org.apache.log4j.PatternLayout
聽聽聽 log4j.appender.A1.layout.ConversionPattern=
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 %-4r %-5p %d{yyyy-MM-dd HH:mm:ssS} %c %m%n
聽聽聽 榪欓噷闇瑕佽鏄庣殑灝辨槸鏃ュ織淇℃伅鏍煎紡涓嚑涓鍙鋒墍浠h〃鐨勫惈涔夛細
聽聽聽 錛峏鍙? X淇℃伅杈撳嚭鏃跺乏瀵歸綈錛?br />聽聽聽 %p: 鏃ュ織淇℃伅綰у埆
聽聽聽 %d{}: 鏃ュ織淇℃伅浜х敓鏃墮棿
聽聽聽 %c: 鏃ュ織淇℃伅鎵鍦ㄥ湴錛堢被鍚嶏級
聽聽聽 %m: 浜х敓鐨勬棩蹇楀叿浣撲俊鎭?br />聽聽聽 %n: 杈撳嚭鏃ュ織淇℃伅鎹㈣
聽
鏍規嵁涓婇潰鐨勬棩蹇楁牸寮忥紝鏌愪竴涓▼搴忕殑杈撳嚭緇撴灉濡備笅錛?/strong>
0聽聽聽 INFO聽 2003-06-13 13:23:46968 ClientWithLog4j Client socket: Socket[addr=localhost/127.0.0.1,port=8002,localport=2014]
16聽聽 DEBUG 2003-06-13 13:23:46984 ClientWithLog4j Server says: 'Java server with log4j, Fri Jun 13 13:23:46 CST 2003'
16聽聽 DEBUG 2003-06-13 13:23:46984 ClientWithLog4j GOOD
16聽聽 DEBUG 2003-06-13 13:23:46984 ClientWithLog4j Server responds: 'Command 'HELLO' not understood.'
16聽聽 DEBUG 2003-06-13 13:23:46984 ClientWithLog4j HELP
16聽聽 DEBUG 2003-06-13 13:23:46984 ClientWithLog4j Server responds: 'Vocabulary: HELP QUIT'
16聽聽 DEBUG 2003-06-13 13:23:46984 ClientWithLog4j QUIT