锘??xml version="1.0" encoding="utf-8" standalone="yes"?> common-logging鏄痑pache鎻愪緵鐨勪竴涓氱敤鐨勬棩蹇楁帴鍙c傜敤鎴峰彲浠ヨ嚜鐢遍夋嫨絎笁鏂圭殑鏃ュ織緇勪歡浣滀負鍏蜂綋瀹炵幇錛屽儚log4j錛屾垨鑰卝dk鑷甫鐨刲ogging錛?common-logging浼氶氳繃鍔ㄦ佹煡鎵劇殑鏈哄埗錛屽湪紼嬪簭榪愯鏃惰嚜鍔ㄦ壘鍑虹湡姝d嬌鐢ㄧ殑鏃ュ織搴撱傚綋鐒訛紝common-logging鍐呴儴鏈変竴涓猄imple logger鐨勭畝鍗曞疄鐜幫紝浣嗘槸鍔熻兘寰堝急銆傛墍浠ヤ嬌鐢╟ommon-logging錛岄氬父閮芥槸閰嶅悎鐫log4j鏉ヤ嬌鐢ㄣ備嬌鐢ㄥ畠鐨勫ソ澶勫氨鏄紝浠g爜渚濊禆鏄痗ommon-logging鑰岄潪log4j錛?閬垮厤浜嗗拰鍏蜂綋鐨勬棩蹇楁柟妗堢洿鎺ヨ﹀悎錛屽湪鏈夊繀瑕佹椂錛屽彲浠ユ洿鏀規棩蹇楀疄鐜扮殑絎笁鏂瑰簱銆?/span> 浣跨敤slf4j鐨勫父瑙佷唬鐮侊細
鏄ㄥぉ鏀跺埌涓涓鑰呯暀璦錛岄棶浣滀負紼嬪簭鍛橈紝鏈変粈涔堝涔犲拰宸ヤ綔涓婄殑濂戒範鎯彲浠ュ熼壌錛熸兂浜嗘兂錛屽共鑴嗛檮搴擱闆呬竴涓嬶紝鎬葷粨涓庨珮鏁堣兘紼嬪簭鍛樼殑涓冧釜涔犳儻銆忓惂銆侱isclaimer錛氫竴瀹朵箣璦錛屽彲涓嶄俊錛屼絾涔熷彲浠ラ儴鍒嗕俊銆?nbsp;
1. 鎷ユ姳unix鍝插
姣忎釜紼嬪簭鍛樺叆闂ㄧ殑絎竴鍫傚拰絎簩鍫傝搴旇鏄拰unix鍝插鐩稿叧鐨勫唴瀹癸紝綆璦涔嬪氨鏄細鍋氫竴浠朵簨錛屽仛濂藉畠銆傚叿浣撶偣錛?/span>
2. 閫変竴涓牱鏉匡紝follow涔?/strong>
姣忎釜NBA鏂扮閮芥湁鑷繁鐨勬牱鏉匡紝鎴戜滑涔熸諱範鎯О鏌愯凍鐞冩柊鏄熶負銆庡皬緗椼忥紝銆庡皬灝忕綏銆忋傛牱鏉夸負浣犳彁渚涗簡鍙ā浠垮彲榪借刀鐨勫璞★紝鍚屾椂涔熻浣犲瑙嗚嚜宸辯┒绔熸兂鎴愪負浠涔堟牱鐨勭▼搴忓憳銆傛垜鐨勬牱鏉挎槸Greg Pass鍜學erner Vogels錛岃櫧鐒舵垜榪欒緢瀛愬彲鑳戒篃杈句笉鍒頒粬浠殑楂樺害錛屽彲榪欏茍涓嶅Θ紕嶅悜鐫鎴戝績鐩腑鐨勬槑鏄熶竴姝ユ闈犺繎銆?nbsp;
3. 鍐欎唬鐮侊紝鑰屼笉鏄皟浠g爜
鍐欒蔣浠舵渶緋熺硶鐨勪綋楠屾亹鎬曟槸杈瑰啓杈硅皟錛屽啓涓鐐癸紝榪愯涓涓嬶紝鍐嶅啓涓鐐廣傛槸寰堝紼嬪簭鍛橀兘浼氳繖涔堝共銆傚師鍥犳湁浜岋細1. 涓嶇啛鎮夌浉鍏崇殑浠g爜錛堢被搴擄級錛岄渶瑕佽竟鍐欒竟榪愯淇濊瘉浠g爜鐨勬紜?. 鐜頒唬緙栫▼璇█鐨凴EPL(Read-Evaluate-Print-Loop錛屽氨鏄璦鐨剆hell)鑳藉姏鍔╅暱浜嗚繖涓琛屼負銆?nbsp;
鍐欑郴緇熻蔣浠剁殑浜哄緢灝戣繖涔堝仛銆備粬浠墜澶寸碂緋曠殑宸ュ叿璁╄竟鍐欒竟璋冪殑琛屼負鎴愪負鏁堢巼鏉鎵?—— 濡傛灉紼嶇◢鏀瑰姩錛岀紪璇戝氨瑕佽姳鍘誨嚑鍒嗛挓錛岀敋鑷蟲洿闀跨殑鏃墮棿錛屼綘榪樹細榪欎箞騫蹭箞錛熸墍浠ヤ粬浠線寰鏄啓瀹屼竴涓ā鍧楋紝鍐嶇紪璇戣皟璇曘傦紙鐢辨鐪嬫潵錛岄珮鏁堢殑宸ュ叿鏈夋椂鍊欐槸鎶婂弻鍒冨墤鍟婏級
鎴戣寰楀啓浠g爜灝辮窡鍐欐枃绔犱竴鏍鳳紝鏋勬濆ソ錛屾湁浜嗗ぇ綰詫紝灝卞簲璇ヨ浜戞祦姘翠竴鏍峰啓涓嬪幓錛屼竴姘斿懙鎴愶紝鐒跺悗鍥炶繃澶存潵鍐嶈皟鏁磋鍙ワ紝淇敼閿欏埆瀛椼傚鏋滃啓瀹屼竴孌碉紝灝辮鍥炴函媯鏌ヤ箣鍓嶅啓鐨勫唴瀹癸紝鏁堢巼寰堜綆錛屾濈淮涔熶細琚墦鏁c?nbsp;
闈犺竟鍐欒竟璋冨仛鍑烘潵鐨勪唬鐮佽繕寰寰璐ㄩ噺涓嶉珮銆傝櫧鐒跺眬閮ㄧ粡榪囦簡闆曠悽錛屼絾鏁翠綋涓婁笉閭d箞鍗忚皟錛岀湅鐫鎬繪槸鍒壄銆傝繖灝卞ソ姣旈洉鍒伙紝鎷跨潃涓鍧楃煶澶達紝浣犲厛鏄簿淇簡榧誨瓙錛岀劧鍚庡啀涓鐐逛竴鐐瑰埢鐢婚潰閮ㄣ傜瓑淇埌鑰蟲湹鐨勬椂鍊欙紝榧誨瓙鍙兘榪囧ぇ鎴栬繃灝忥紝鍗充究鍐嶇簿緹庯紝瀹冧篃寰椾笉鍒拌禐璧忋?nbsp;
4. 鑱槑鍦拌皟璇?/strong>
杞歡鎬諱細鍑洪棶棰樸傞亣鍒伴棶棰橈紝寰堝紼嬪簭鍛樺氨浼氱敤IDE鍦ㄥ悇縐嶅彲鑳界殑鍦版柟鍔犳柇鐐硅皟璇曪紝濡傛灉娌℃湁IDE錛岄偅涔堝悇縐峱rint/log鎵嬫涓榻愭姏鍑猴紝鏈夋灒娌℃灒鎵撲竴鏉嗗瓙鍐嶈銆?nbsp;
浼樼鐨勭▼搴忓憳浼氬湪鎾板啓浠g爜鐨勬椂鍊欏氨鑰冭檻鍒拌皟璇曢棶棰橈紝鍦ㄧ郴緇熷叧閿殑鑺傜偣涓婃敞鍏ュ悇縐嶇瓑綰х殑璋冭瘯淇℃伅錛岀劧鍚庡湪闇瑕佺殑鏃跺欐墦寮鐩稿簲鐨勮皟璇曠駭鍒紝欏鴻棨鎽哥摐錛岄伩鍏嶄簡涓嶉潬璋辯殑鑷嗘祴銆傝繖鏄皟璇曚箣銆庨亾銆忋?nbsp;
寰堝闂鎵撳紑璋冭瘯寮鍏沖悗灝卞師褰㈡瘯闇詫紝浣嗘湁鏃跺欓潬璋冭瘯淇℃伅鎵懼埌浜嗗垵姝ュ師鍥狅紝榪涗竴姝ュ畾浣嶉棶棰樿繕闇瑕佸叿浣撶殑宸ュ叿錛屼篃灝辨槸璋冭瘯涔嬨庢湳銆忥紝濡備笂鏂囨墍榪頒箣鏂偣璋冭瘯銆傛湁浜涙椂鍊欙紝閬囧埌闈犵被浼糶db錛堝python鐨刾db錛夌殑宸ュ叿鏃犳硶瑙e喅鐨勯棶棰樻椂錛堝鎬ц兘闂錛夛紝浣犺繕闇瑕佹洿澶氱殑璋冭瘯宸ュ叿鍋歳untime profiling錛屽systemtap銆?nbsp;
5. 浣跨敤鏍囪璇█鏉ュ啓鏂囨。錛岃岄潪word/power point
涓嶈浣跨敤鍙兘浣跨敤鐗瑰畾杞歡鎵嶈兘鎵撳紑鐨勫伐鍏峰啓鏂囨。錛屽word/page鎴栬卲ower point/keynote銆傝浣跨敤銆庢斁涔嬪洓嫻瘋岀殕鍙敤銆忕殑宸ュ叿銆?nbsp;
java鐨勫競鍦哄彛鍙鋒槸錛氥庝竴嬈$紪鍐欙紝鍒板榪愯銆忥紝瀵逛簬鏂囨。錛屼綘涔熼渶瑕佽繖鏍風殑宸ュ叿銆侻arkdown(md) / Restructured Text(rst)錛堜互鍙婁換浣曠紪杈戣璦錛岀敋鑷蟲槸jade錛夊氨鏄繖鏍風殑宸ュ叿銆傞氳繃浣跨敤涓縐嶇壒瀹氱殑鏂囨湰鏍煎紡錛屼綘鐨勬枃妗e彲浠ヨ緙栬瘧鎴愬嚑涔庝換鎰忔牸寮忥紙html錛宺tf錛宭atex錛宲df錛宔pub錛?..錛夛紝鐪熸杈懼埌浜嗐庝竴嬈$紪鍐欙紝鍒板榪愯銆忋傛渶閲嶈鐨勬槸錛岀敱浜庨昏緫灞傦紙鏂囩珷鏈韓錛夊拰琛ㄧ幇灞傦紙鍚勭鏍煎紡錛屽瓧浣擄紝琛岃窛絳夛級鍒嗙錛屽悓鏍風殑鏂囨。錛屾崲涓ā鏉匡紝灝辨湁瀹屽叏涓嶄竴鏍風殑褰㈣薄銆?nbsp;
闄ら潪蹇呴』錛屾垜鐜板湪鎵鏈夌殑鏂囨。閮芥槸md鎴栬卹st鏍煎紡銆?nbsp;
6. 涓鍒囩殕欏圭洰
紼嬪簭鍛樼殑鎵鏈変駭鍑哄簲璇ラ」鐩埗銆傝蔣浠惰嚜涓嶅繀璇達紝鏂囨。鍜屽悇縐嶇鐗囨濇兂涔熻鏍規嵁鐩稿叧鎬х粍緇囨垚欏圭洰銆備婦涓浜涙垜鑷繁鐨勪緥瀛愶細
欏圭洰鍒剁殑濂藉鏄叿澶囧彲鍥炴函鎬с傛瘡涓」鐩垜鍙互鐢╣it鏉ョ鐞嗭紝榪欐牱錛屽嚑涔庡湪浠諱綍涓鍙拌澶囦笂鎴戦兘鍙互鐪嬪埌鎴戜箣鍓嶇殑宸ヤ綔銆傛兂鎯充綘涓夊勾鍓嶅啓鐨勬煇涓枃妗o紝浣犺繕鑳芥壘鍒板畠涔堬紵浣犺繕鑳芥壘鍥炰綘鐨勪慨鏀瑰巻鍙蹭箞錛?nbsp;
欏圭洰鍒剁殑鍙︿竴澶уソ澶勬槸鍙互鍦ㄥ叾涔嬩笂浣胯兘宸ュ叿銆傛瘮濡傝浣犵湅鍒扮殑榪欎簺寰俊鏂囩珷錛屾垜闅忔椂鍙互“make publish YEAR=2014”鏉ョ敓鎴愬寘鍚簡2014騫存垜鎵鍐欐枃绔犵殑pdf銆?nbsp;
7. 蹇冩佸紑鏀撅紝鍕囦簬灝濊瘯
鍦ㄧ▼搴忓憳紺懼尯閲岋紝璇█涔嬩簤錛岀郴緇熶箣浜夛紝杞歡鎬濇兂涔嬩簤鍑犱箮鏄父鎬併俻ython vs ruby錛実o vs java vs erlang vs rust錛宻cala vs cljure錛孫OP vs FP錛宨OS vs Android銆傚叾瀹炰笉綆¢粦鐚櫧鐚紝鎶撳埌鑰侀紶鐨勫氨鏄ソ鐚紝facebook榪樼敤php鍛€傜▼搴忓憳搴旇鐢ㄥ紑鏀劇殑蹇冩佸幓鍖呭鏂扮殑鎶鏈紝鏂扮殑鎬濇兂錛屽媷浜庡皾璇曪紝鑰屼笉鏄珛鍗沖惁瀹氥傝繖涓笘鐣屾渶鎮插搥鐨勬槸錛屾墜閲屾湁鎶婇敜瀛愶紝鐪嬩粈涔堥兘鏄拤瀛愶紙鎴栬呰錛岀溂閲屽氨鍙兘鐪嬭閽夊瓙錛夈?nbsp;
鎴戞帴瑙ac鏃墮棿涓嶈繃涓夊勾銆傚彲榪欎笁騫存椂闂達紝鎴戜粠瀵筸ac涓嶅睉錛屽埌娣辨繁鐑埍錛屾渶緇堟垚涓簃ac鐨勪竴涓噸搴︾敤鎴楓傚緢澶氫笢瑗跨敤榪囨墠鐭ラ亾錛屼笉灝濊瘯涓嶆帴瑙︽垜鍙兘姘歌繙媧誨湪鑷繁涓嬫剰璇嗘瀯絳戠殑鏃犲艦涔嬪鐨勫彟涓杈廣?/span>
]]>
浠庝笂榪板姞杞芥祦紼嬫潵鐪嬶紝鍙寮曞叆浜唋og4j 騫跺湪classpath 閰嶇疆浜唋og4j.xml 錛屽垯commons-logging 灝變細浣縧og4j 浣跨敤姝e父錛岃屼唬鐮侀噷涓嶉渶瑕佷緷璧栦換浣昹og4j 鐨勪唬鐮併?/span>slf4j
slf4j鍏ㄧО涓篠imple Logging Facade for JAVA錛宩ava綆鍗曟棩蹇楅棬闈€傜被浼間簬Apache Common-Logging錛屾槸瀵逛笉鍚屾棩蹇楁鏋舵彁渚涚殑涓涓棬闈㈠皝瑁咃紝鍙互鍦ㄩ儴緗茬殑鏃跺欎笉淇敼浠諱綍閰嶇疆鍗沖彲鎺ュ叆涓縐嶆棩蹇楀疄鐜版柟妗堛備絾鏄紝浠栧湪緙栬瘧鏃墮潤鎬佺粦瀹氱湡姝g殑Log搴撱備嬌鐢⊿LF4J鏃訛紝濡傛灉浣犻渶瑕佷嬌鐢ㄦ煇涓縐嶆棩蹇楀疄鐜幫紝閭d箞浣犲繀欏婚夋嫨姝g‘鐨凷LF4J鐨刯ar鍖呯殑闆嗗悎錛堝悇縐嶆ˉ鎺ュ寘錛夈?/span>
slf4j闈欐佺粦瀹氬師鐞?/strong>錛歋LF4J 浼氬湪緙栬瘧鏃朵細緇戝畾import org.slf4j.impl.StaticLoggerBinder; 璇ョ被閲岄潰瀹炵幇瀵瑰叿浣撴棩蹇楁柟妗堢殑緇戝畾鎺ュ叆銆備換浣曚竴縐嶅熀浜巗lf4j 鐨勫疄鐜伴兘瑕佹湁涓涓繖涓被銆傚錛歰rg.slf4j.slf4j-log4j12-1.5.6: 鎻愪緵瀵?log4j 鐨勪竴縐嶉傞厤瀹炵幇銆?span style="color: #ff0000;">娉ㄦ剰錛氬鏋滄湁浠繪剰涓や釜瀹炵幇slf4j 鐨勫寘鍚屾椂鍑虹幇錛岄偅涔堝氨鍙兘鍑虹幇闂銆?/span>slf4j 涓?common-logging 姣旇緝
common-logging閫氳繃鍔ㄦ佹煡鎵劇殑鏈哄埗錛屽湪紼嬪簭榪愯鏃惰嚜鍔ㄦ壘鍑虹湡姝d嬌鐢ㄧ殑鏃ュ織搴撱傜敱浜庡畠浣跨敤浜咰lassLoader瀵繪壘鍜岃澆鍏ュ簳灞傜殑鏃ュ織搴擄紝 瀵艱嚧浜嗚薄OSGI榪欐牱鐨勬鏋舵棤娉曟甯稿伐浣滐紝鍥犱負OSGI鐨勪笉鍚岀殑鎻掍歡浣跨敤鑷繁鐨凜lassLoader銆?OSGI鐨勮繖縐嶆満鍒朵繚璇佷簡鎻掍歡浜掔浉鐙珛錛岀劧鑰屽嵈浣緼pache Common-Logging鏃犳硶宸ヤ綔銆?br />
slf4j鍦?span style="color: #ff0000;">緙栬瘧鏃墮潤鎬佺粦瀹?/span>鐪熸鐨凩og搴?鍥犳鍙互鍐峅SGI涓嬌鐢ㄣ傚彟澶栵紝SLF4J 鏀寔鍙傛暟鍖栫殑log瀛楃涓詫紝閬垮厤浜嗕箣鍓嶄負浜嗗噺灝戝瓧絎︿覆鎷兼帴鐨勬ц兘鎹熻楄屼笉寰椾笉鍐欑殑if(logger.isDebugEnable())錛岀幇鍦ㄤ綘鍙互鐩存帴鍐欙細logger.debug(“current user is: {}”, user)銆傛嫾瑁呮秷鎭鎺ㄨ繜鍒頒簡瀹冭兘澶熺‘瀹氭槸涓嶆槸瑕佹樉紺鴻繖鏉℃秷鎭殑鏃跺欙紝浣嗘槸鑾峰彇鍙傛暟鐨勪唬浠峰茍娌℃湁騫稿厤銆?/span>Log4j
Apache鐨勪竴涓紑鏀炬簮浠g爜欏圭洰錛岄氳繃浣跨敤Log4j錛屾垜浠彲浠ユ帶鍒舵棩蹇椾俊鎭緭閫佺殑鐩殑鍦版槸鎺у埗鍙般佹枃浠躲丟UI緇勪歡銆佺敋鑷蟲槸濂楁帴鍙f湇鍔?鍣ㄣ丯T鐨勪簨浠惰褰曞櫒銆乁NIX Syslog瀹堟姢榪涚▼絳夛紱鐢ㄦ埛涔熷彲浠ユ帶鍒舵瘡涓鏉℃棩蹇楃殑杈撳嚭鏍煎紡錛涢氳繃瀹氫箟姣忎竴鏉℃棩蹇椾俊鎭殑綰у埆錛岀敤鎴瘋兘澶熸洿鍔犵粏鑷村湴鎺у埗鏃ュ織鐨勭敓鎴愯繃紼嬨傝繖浜涘彲浠ラ氳繃涓涓?閰嶇疆鏂囦歡鏉ョ伒媧誨湴榪涜閰嶇疆錛岃屼笉闇瑕佷慨鏀圭▼搴忎唬鐮併?/span>LogBack
Logback鏄敱log4j鍒涘浜鴻璁$殑鍙堜竴涓紑婧愭棩璁扮粍浠躲俵ogback褰撳墠鍒嗘垚涓変釜妯″潡錛歭ogback-core,logback- classic鍜宭ogback-access銆俵ogback-core鏄叾瀹冧袱涓ā鍧楃殑鍩虹妯″潡銆俵ogback-classic鏄痩og4j鐨勪竴涓?鏀硅壇鐗堟湰銆傛澶杔ogback-classic瀹屾暣瀹炵幇SLF4J API浣夸綘鍙互寰堟柟渚垮湴鏇存崲鎴愬叾瀹冩棩璁扮郴緇熷log4j鎴朖DK14 Logging銆俵ogback-access璁塊棶妯″潡涓嶴ervlet瀹瑰櫒闆嗘垚鎻愪緵閫氳繃Http鏉ヨ闂棩璁扮殑鍔熻兘銆?nbsp;Log4j 涓?LogBack 姣旇緝
LogBack浣滀負涓涓氱敤鍙潬銆佸揩閫熺伒媧葷殑鏃ュ織妗嗘灦錛屽皢浣滀負Log4j鐨勬浛浠e拰SLF4J緇勬垚鏂扮殑鏃ュ織緋葷粺鐨勫畬鏁村疄鐜般侺OGBack澹扮О鍏鋒湁鏋佷匠鐨勬ц兘錛?#8220; 鏌愪簺鍏抽敭鎿嶄綔錛屾瘮濡傚垽瀹氭槸鍚﹁褰曚竴鏉℃棩蹇楄鍙ョ殑鎿嶄綔錛屽叾鎬ц兘寰楀埌浜嗘樉钁楃殑鎻愰珮銆傝繖涓搷浣滃湪LogBack涓渶瑕?綰崇錛岃屽湪Log4J涓垯闇瑕?0綰崇銆?LogBack鍒涘緩璁板綍鍣紙logger錛夌殑閫熷害涔熸洿蹇細13寰錛岃屽湪Log4J涓渶瑕?3寰銆傛洿閲嶈鐨勬槸錛屽畠鑾峰彇宸插瓨鍦ㄧ殑璁板綍鍣ㄥ彧闇94綰崇錛岃?Log4J闇瑕?234綰崇錛屾椂闂村噺灝戝埌浜?/23銆傝窡JUL鐩告瘮鐨勬ц兘鎻愰珮涔熸槸鏄捐憲鐨?#8221;銆?鍙﹀錛孡OGBack鐨勬墍鏈夋枃妗f槸鍏ㄩ潰鍏嶈垂鎻愪緵鐨勶紝涓嶈薄Log4J閭f牱鍙彁渚涢儴鍒嗗厤璐規枃妗h岄渶瑕佺敤鎴峰幓璐拱浠樿垂鏂囨。銆?nbsp;slf4j涓庡叾浠栧悇縐嶆棩蹇楃粍浠剁殑妗ユ帴
鏃ュ織緇勪歡鐩稿叧鍘嗗彶
Java 鐣岄噷鏈夎澶氬疄鐜版棩蹇楀姛鑳界殑宸ュ叿錛屾渶鏃╁緱鍒板箍娉涗嬌鐢ㄧ殑鏄?log4j錛岃澶氬簲鐢ㄧ▼搴忕殑鏃ュ織閮ㄥ垎閮戒氦緇欎簡 log4j錛屼笉榪囦綔涓虹粍浠跺紑鍙戣咃紝浠栦滑甯屾湜鑷繁鐨勭粍浠朵笉瑕佺揣绱т緷璧栨煇涓涓伐鍏鳳紝姣曠珶鍦ㄥ悓涓涓椂鍊欒繕鏈夊緢澶氬叾浠栧緢澶氭棩蹇楀伐鍏鳳紝鍋囧涓涓簲鐢ㄧ▼搴忕敤鍒頒簡涓や釜緇勪歡錛屾伆濂戒袱涓粍浠朵嬌鐢ㄤ笉鍚岀殑鏃ュ織宸ュ叿錛岄偅涔堝簲鐢ㄧ▼搴忓氨浼氭湁涓や喚鏃ュ織杈撳嚭浜嗐?br />
涓轟簡瑙e喅榪欎釜闂錛孉pache Commons Logging 錛堜箣鍓嶅彨 Jakarta Commons Logging錛孞CL錛夌矇澧ㄧ櫥鍦猴紝JCL 鍙彁渚?log 鎺ュ彛錛屽叿浣撶殑瀹炵幇鍒欏湪榪愯鏃跺姩鎬佸鎵俱傝繖鏍蜂竴鏉ョ粍浠跺紑鍙戣呭彧闇瑕侀拡瀵?JCL 鎺ュ彛寮鍙戯紝鑰岃皟鐢ㄧ粍浠剁殑搴旂敤紼嬪簭鍒欏彲浠ュ湪榪愯鏃舵惌閰嶈嚜宸卞枩濂界殑鏃ュ織瀹炶返宸ュ叿銆?br />
鎵浠ュ嵆浣垮埌鐜板湪浣犱粛浼氱湅鍒板緢澶氱▼搴忓簲鐢?JCL + log4j 榪欑鎼厤錛屼笉榪囧綋紼嬪簭瑙勬ā瓚婃潵瓚婂簽澶ф椂錛孞CL鐨勫姩鎬佺粦瀹氬茍涓嶆槸鎬昏兘鎴愬姛錛屽叿浣撳師鍥犲ぇ瀹跺彲浠?Google 涓涓嬶紝榪欓噷灝變笉鍐嶈禈榪頒簡銆傝В鍐蟲柟娉曚箣涓灝辨槸鍦ㄧ▼搴忛儴緗叉椂闈欐佺粦瀹氭寚瀹氱殑鏃ュ織宸ュ叿錛岃繖灝辨槸 SLF4J 浜х敓鐨勫師鍥犮?br />
璺?JCL 涓鏍鳳紝SLF4J 涔熸槸鍙彁渚?log 鎺ュ彛錛屽叿浣撶殑瀹炵幇鏄湪鎵撳寘搴旂敤紼嬪簭鏃舵墍鏀懼叆鐨勭粦瀹氬櫒錛堝悕瀛椾負 slf4j-XXX-version.jar錛夋潵鍐沖畾錛孹XX 鍙互鏄?log4j12, jdk14, jcl, nop 絳夛紝浠栦滑瀹炵幇浜嗚窡鍏蜂綋鏃ュ織宸ュ叿錛堟瘮濡?log4j錛夌殑緇戝畾鍙婁唬鐞嗗伐浣溿備婦涓緥瀛愶細濡傛灉涓涓▼搴忓笇鏈涚敤 log4j 鏃ュ織宸ュ叿錛岄偅涔堢▼搴忓彧闇閽堝 slf4j-api 鎺ュ彛緙栫▼錛岀劧鍚庡湪鎵撳寘鏃跺啀鏀懼叆 slf4j-log4j12-version.jar 鍜?log4j.jar 灝卞彲浠ヤ簡銆?br />
鐜板湪榪樻湁涓涓棶棰橈紝鍋囧浣犳鍦ㄥ紑鍙戝簲鐢ㄧ▼搴忔墍璋冪敤鐨勭粍浠跺綋涓凡緇忎嬌鐢ㄤ簡 JCL 鐨勶紝榪樻湁涓浜涚粍寤哄彲鑳界洿鎺ヨ皟鐢ㄤ簡 java.util.logging錛岃繖鏃朵綘闇瑕佷竴涓ˉ鎺ュ櫒錛堝悕瀛椾負 XXX-over-slf4j.jar錛夋妸浠栦滑鐨勬棩蹇楄緭鍑洪噸瀹氬悜鍒?SLF4J錛屾墍璋撶殑妗ユ帴鍣ㄥ氨鏄竴涓亣鐨勬棩蹇楀疄鐜板伐鍏鳳紝姣斿褰撲綘鎶?jcl-over-slf4j.jar 鏀懼埌 CLASS_PATH 鏃訛紝鍗充嬌鏌愪釜緇勪歡鍘熸湰鏄氳繃 JCL 杈撳嚭鏃ュ織鐨勶紝鐜板湪鍗翠細琚?jcl-over-slf4j “楠楀埌”SLF4J 閲岋紝鐒跺悗 SLF4J 鍙堜細鏍規嵁緇戝畾鍣ㄦ妸鏃ュ織浜ょ粰鍏蜂綋鐨勬棩蹇楀疄鐜板伐鍏楓傝繃紼嬪涓?br />
Component
|
| log to Apache Commons Logging
V
jcl-over-slf4j.jar --- (redirect) ---> SLF4j ---> slf4j-log4j12-version.jar ---> log4j.jar ---> 杈撳嚭鏃ュ織
鐪嬪埌涓婇潰鐨勬祦紼嬪浘鍙兘浼氬彂鐜頒竴涓湁瓚g殑闂錛屽亣濡傚湪 CLASS_PATH 閲屽悓鏃舵斁緗?log4j-over-slf4j.jar 鍜?slf4j-log4j12-version.jar 浼氬彂鐢熶粈涔堟儏鍐靛憿錛熸病閿欙紝鏃ュ織浼氳韙㈡潵韙㈠幓錛屾渶緇堣繘鍏ユ寰幆銆?br />
鎵浠ヤ嬌鐢?SLF4J 鐨勬瘮杈冨吀鍨嬫惌閰嶅氨鏄妸 slf4j-api銆丣CL 妗ユ帴鍣ㄣ乯ava.util.logging錛圝UL錛夋ˉ鎺ュ櫒銆乴og4j 緇戝畾鍣ㄣ乴og4j 榪?涓?jar 鏀劇疆鍦?CLASS_PATH 閲屻?br />
涓嶈繃騫朵笉鏄墍鏈堿PP瀹瑰櫒閮芥槸浣跨敤 log4j 鐨勶紝姣斿 Google AppEngine 瀹冧嬌鐢ㄧ殑鏄?java.util.logging錛圝UL錛夛紝榪欐椂搴旂敤 SLF4J 鐨勬惌閰嶅氨鍙樻垚 slf4j-api銆丣CL妗ユ帴鍣ㄣ乴ogj4妗ユ帴鍣ㄣ丣UL緇戝畾鍣ㄨ繖4涓?jar 鏀劇疆鍦?WEB-INF/lib 閲屻?/span>
]]>
slf4j:Simple Logging Facade for Java錛屼負java鎻愪緵鐨勭畝鍗曟棩蹇桭acade銆侳acade錛氶棬闈紝鏇村簳灞備竴鐐硅灝辨槸鎺ュ彛銆備粬鍏佽鐢ㄦ埛浠ヨ嚜宸辯殑鍠滃ソ錛屽湪宸ョ▼涓氳繃slf4j鎺ュ叆涓嶅悓鐨勬棩蹇楃郴緇熴傛洿鐩磋涓鐐癸紝slf4j鏄釜鏁版嵁綰匡紝涓绔祵鍏ョ▼搴忥紝鍙︿竴绔摼鎺ユ棩蹇楃郴緇燂紝浠庤屽疄鐜板皢紼嬪簭涓殑淇℃伅瀵煎叆鍒版棩蹇楃郴緇熷茍璁板綍銆?nbsp;
鍥犳錛宻lf4j鍏ュ彛灝辨槸浼楀鎺ュ彛鐨勯泦鍚堬紝浠栦笉璐熻矗鍏蜂綋鐨勬棩蹇楀疄鐜幫紝鍙湪緙栬瘧鏃惰礋璐e鎵懼悎閫傜殑鏃ュ織緋葷粺榪涜緇戝畾銆傚叿浣撴湁鍝簺鎺ュ彛錛屽叏閮ㄩ兘瀹氫箟鍦╯lf4j-api涓?/span>鏌ョ湅slf4j-api婧愮爜灝卞彲浠ュ彂鐜幫紝閲岄潰闄や簡public final class LoggerFactory綾諱箣澶栵紝閮芥槸鎺ュ彛瀹氫箟銆傚洜姝わ紝slf4j-api鏈川灝辨槸涓涓帴鍙e畾涔夈?/span>
涓嬪浘姣旇緝娓呮櫚鐨勬弿榪頒簡浠栦滑涔嬮棿鐨勫叧緋伙細
褰撶郴緇熼噰鐢╨og4j浣滀負鏃ュ織妗嗘灦瀹炵幇鐨勮皟鐢ㄥ叧緋伙細
棣栧厛緋葷粺鍖呭惈slf4j-api浣滀負鏃ュ織鎺ュ叆鐨勬帴鍙o紱
at compile鏃秙lf4j-api涓璸ublic final class LoggerFactor綾諱腑
private final static void bind() 鏂規硶浼氬鎵懼叿浣撶殑鏃ュ織瀹炵幇綾葷粦瀹氾紝涓昏閫氳繃
StaticLoggerBinder.getSingleton();璇彞璋冪敤
slf4j-log4j12:閾炬帴slf4j-api鍜宭og4j涓棿鐨勯傞厤鍣ㄣ傚畠瀹炵幇浜唖lf4j-apiz涓璖taticLoggerBinder鎺ュ彛錛屼粠鑰屼嬌寰楀湪緙栬瘧鏃剁粦瀹氱殑鏄痵lf4j-log4j12鐨刧etSingleton()鏂規硶
log4j:榪欎釜鏄叿浣撶殑鏃ュ織緋葷粺銆傞氳繃slf4j-log4j12鍒濆鍖朙og4j錛岃揪鍒版渶緇堟棩蹇楃殑杈撳嚭銆?/span>