天天看点

java 常用日志框架

涓€锛歭og4j,slf4j,logback Commons-logging锛堟ˉ鎺ラ棬闈級聽锛歛pache鏈€鏃╂棩蹇楃殑闂ㄩ潰鎺ュ彛銆傞伩鍏嶅拰鍏蜂綋鐨勬棩蹇楁柟妗堢洿鎺ヨ€﹀悎銆傜被浼间簬JDBC聽鐨刟pi聽鎺ュ彛锛屽叿浣撶殑鐨凧DBC driver聽瀹炵幇鐢卞悇鏁版嵁搴撴彁渚涘晢瀹炵幇銆傞€氳繃缁熶竴鎺ュ彛瑙h€? Slf4j锛堟ˉ鎺ラ棬闈級:聽鍏ㄧО涓篠imple Logging Facade for JAVA锛氭棩蹇楅棬闈€偮犳槸瀵逛笉鍚屾棩蹇楁鏋舵彁渚涚殑涓€涓棬闈㈠皝瑁呫€傚彲浠ュ湪閮ㄧ讲鐨勬椂鍊欎笉淇敼浠讳綍閰嶇疆鍗冲彲鎺ュ叆涓€绉嶆棩蹇楀疄鐜版柟妗堛€傚拰commons-loging聽搴旇鏈変竴鏍风殑鍒濊》

Log4j聽:聽缁忓吀鏃ュ織瑙e喅鏂规銆傚唴閮ㄦ妸鏃ュ織绯荤粺鎶借薄灏佽鎴怢ogger聽銆乤ppender聽銆乸attern聽绛夊疄鐜般€傛垜浠彲浠ラ€氳繃閰嶇疆鏂囦欢杞绘澗鐨勫疄鐜版棩蹇楃郴缁熺殑绠$悊鍜屽鏍峰寲閰嶇疆銆? Logback聽:聽LOGBack聽浣滀负涓€涓€氱敤鍙潬銆佸揩閫熺伒娲荤殑鏃ュ織妗嗘灦锛屽皢浣滀负Log4j聽鐨勬浛浠e拰SLF4J聽缁勬垚鏂扮殑鏃ュ織绯荤粺鐨勫畬鏁村疄鐜般€傚畼缃戜笂绉板叿鏈夋瀬浣崇殑鎬ц兘锛屽湪鎵ц閫熷害鏄痩og4j聽鐨?0聽鍊嶏紝涓斿唴瀛樻秷鑰楁洿灏戙€?

浜屻€佸父瑙佹棩蹇楁柟妗堝拰娉ㄦ剰浜嬮」 1.Commons-logging+log4j聽:聽 缁忓吀鐨勪竴涓棩蹇楀疄鐜版柟妗堛€傚嚭鐜板湪鍚勭妗嗘灦閲屻€傚spring聽銆亀ebx聽銆乮batis聽绛夌瓑銆傜洿鎺ヤ娇鐢╨og4j聽鍗冲彲婊¤冻鎴戜滑鐨勬棩蹇楁柟妗堛€備絾鏄竴鑸负浜嗛伩鍏嶇洿鎺ヤ緷璧栧叿浣撶殑鏃ュ織瀹炵幇锛屼竴鑸兘鏄粨鍚坈ommons-logging聽鏉ュ疄鐜般€傚父瑙佷唬鐮佸涓嬶細

import org.apache.commons.logging.Log;

import org.apache.commons.logging.LogFactory;

private static Log logger = LogFactory.getLog(CommonsLoggingTest.class);

浠g爜涓婏紝娌℃湁渚濊禆浠讳綍鐨刲og4j聽鍐呴儴鐨勭被銆傞偅涔坙og4j聽鏄浣曡瑁呰浇鐨勶紵

Log聽鏄竴涓帴鍙e0鏄庛€侺ogFactory聽鐨勫唴閮ㄤ細鍘昏杞藉叿浣撶殑鏃ュ織绯荤粺锛屽苟鑾峰緱瀹炵幇璇og聽鎺ュ彛鐨勫疄鐜扮被銆傝€屽唴閮ㄦ湁涓€涓狶og4JLogger聽瀹炵幇绫诲Log聽鎺ュ彛鍚屾椂鍐呴儴鎻愪緵浜嗗log4j logger聽鐨勪唬鐞嗐€侺ogFactory聽鍐呴儴瑁呰浇鏃ュ織绯荤粺娴佺▼锛?

1.聽聽聽棣栧厛锛屽鎵緊rg.apache.commons.logging.LogFactory聽灞炴€ч厤缃?

2.聽聽聽鍚﹀垯锛屽埄鐢↗DK1.3聽寮€濮嬫彁渚涚殑service聽鍙戠幇鏈哄埗锛屼細鎵弿classpah聽涓嬬殑META-INF/services/org.apache.commons.logging.LogFactory聽鏂囦欢锛岃嫢鎵惧埌鍒欒杞介噷闈㈢殑閰嶇疆锛屼娇鐢ㄩ噷闈㈢殑閰嶇疆銆?

3.聽聽聽鍚﹀垯锛屼粠Classpath聽閲屽鎵綾ommons-logging.properties聽锛屾壘鍒板垯鏍规嵁閲岄潰鐨勯厤缃姞杞姐€?

4.聽聽聽鍚﹀垯锛屼娇鐢ㄩ粯璁ょ殑閰嶇疆锛氬鏋滆兘鎵惧埌Log4j聽鍒欓粯璁や娇鐢╨og4j聽瀹炵幇锛屽鏋滄病鏈夊垯浣跨敤JDK14Logger聽瀹炵幇锛屽啀娌℃湁鍒欎娇鐢╟ommons-logging聽鍐呴儴鎻愪緵鐨凷impleLog聽瀹炵幇銆?

濡傛灉娌℃湁鍋氫换浣曢厤缃紝鍙寮曞叆浜唋og4j聽骞跺湪classpath聽閰嶇疆浜唋og4j.properties鎴栬€卨og4j.xml锛屽垯commons-logging聽灏变細浣縧og4j聽浣跨敤姝e父锛岃€屼唬鐮侀噷涓嶉渶瑕佷緷璧栦换浣昹og4j聽鐨勪唬鐮併€?

2.Commons-logging+log4j+slf4j

濡傛灉鍦ㄥ師鏈塩ommons-logging聽绯荤粺閲岋紝濡傛灉瑕佽縼绉诲埌slf4j,聽浣跨敤slf4j聽鏇挎崲commons-logging聽锛屼篃鏄彲浠ュ仛鍒扮殑銆傚師鐞嗕娇鐢ㄥ埌浜嗕笂杩癱ommons-logging聽鍔犺浇鐨勭浜岀偣銆傞渶瑕佸紩鍏rg.slf4j.jcl-over-slf4j-1.5.6.jar聽銆傝繖涓猨ar聽鍖呮彁渚涗簡涓€涓ˉ鎺ワ紝璁╁簳灞傚疄鐜版槸鍩轰簬slf4j聽銆傚師鐞嗘槸鍦ㄨjar聽鍖呴噷瀛樻斁浜嗛厤缃甅ETA-INF/services/org.apache.commons.logging.LogFactory =org.apache.commons.logging.impl.SLF4JLogFactory锛岃€宑ommons-logging聽鍦ㄥ垵濮嬪寲鐨勬椂鍊欎細鎵惧埌杩欎釜serviceId聽锛屽苟鎶婂畠浣滀负LogFactory聽銆?

瀹屾垚妗ユ帴鍚庯紝閭d箞閭d箞绠€鍗曟棩蹇楅棬闈LF4J聽鍐呴儴鍙堟槸濡備綍鏉ヨ杞藉悎閫傜殑log聽鍛紵

鍘熺悊鏄疭LF4J聽浼氬湪缂栬瘧鏃朵細缁戝畾import org.slf4j.impl.StaticLoggerBinder;聽璇ョ被閲岄潰瀹炵幇瀵瑰叿浣撴棩蹇楁柟妗堢殑缁戝畾鎺ュ叆銆備换浣曚竴绉嶅熀浜巗lf4j聽鐨勫疄鐜伴兘瑕佹湁涓€涓繖涓被銆傚锛?

org.slf4j.slf4j-log4j12-1.5.6:聽鎻愪緵瀵孤爈og4j聽鐨勪竴绉嶉€傞厤瀹炵幇銆?

Org.slf4j.slf4j-simple-1.5.6:聽鏄竴绉嵚爏imple聽瀹炵幇锛屼細灏喡爈og聽鐩存帴鎵撳埌鎺у埗鍙般€?

鈥︹€?

閭d箞杩欎釜鍦版柟灏辫娉ㄦ剰浜嗭細濡傛灉鏈変换鎰忎袱涓疄鐜皊lf4j聽鐨勫寘鍚屾椂鍑虹幇锛岄偅灏辨湁鍙兘閰垮氨鎮插墽锛屼綘鍙兘浼氬彂鐜版棩蹇椾笉瑙佷簡銆佹垨閮芥墦鍒版帶鍒跺彴浜嗐€傚師鍥犳槸杩欎袱涓猨ar聽鍖呴噷閮芥湁鍚勮嚜鐨刼rg.slf4j.impl.StaticLoggerBinder聽锛岀紪璇戞椂鍊欑粦瀹氱殑鏄摢涓槸涓嶇‘瀹氱殑銆傝繖涓湴鏂硅鐗瑰埆娉ㄦ剰锛侊紒鍑虹幇杩囧嚑娆″洜涓鸿繖涓鑷存棩蹇楅敊涔辩殑闂銆?

闇€瑕乯ar鍖咃細

1. slf4j-api-1.5.11.jar聽

2. slf4j-log4j12-1.5.11.jar聽

3. log4j-1.2.15.jar聽

4. log4j.properties(涔熷彲浠ユ槸 log4j.xml锛屾湰渚嬩腑鐢?log4j.propertes)

log4j.properties

log4j.appender.stdout=org.apache.log4j.ConsoleAppender 聽

log4j.appender.stdout.Target=System.out 聽

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 聽

log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n 聽

log4j.appender.db=org.apache.log4j.FileAppender 聽

log4j.appender.db.File=${s2sh.root}/WEB-INF/logs/ssh.log 聽

log4j.appender.db.Append=true 聽

log4j.appender.db.layout=org.apache.log4j.PatternLayout 聽

log4j.appender.db.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%-5p][%c{1}] - %m%n

3聽SLF4J+LogBack

Logback 鍒嗕负涓変釜妯″潡锛歭ogback-core锛宭ogback-classic锛宭ogback-access銆俵ogback-core 鏄牳蹇冿紱logback-classic 鏀瑰杽浜?log4j锛屼笖鑷韩瀹炵幇浜?SLF4J API锛屾墍浠ュ嵆浣跨敤 Logback 浣犱粛鐒跺彲浠ヤ娇鐢ㄥ叾浠栫殑鏃ュ織瀹炵幇锛屽鍘熷鐨?Log4J锛宩ava.util.logging 绛夛紱logback-access 璁╀綘鏂逛究鐨勮闂棩蹇椾俊鎭紝濡傞€氳繃 http 鐨勬柟寮徛?

闇€瑕乯ar鍖咃細

slf4j-api-1.5.11.jar聽

logback-core-0.9.20.jar聽

logback-classic-0.9.20.jar聽

logback.xml 鎴?logback-test.xml (绫讳技浜?log4j.properties/log4j.xml)聽

Logback 鍏堟壘 logback-test.xml锛屾病鏈夊垯鎵?logback.xml 鏂囦欢锛岄兘鎵句笉鍒板氨浣跨敤 BasicConfigurator 鍩烘湰閰嶇疆锛孊asicConfigurator 灏辨槸鐩稿綋浜庣瓑浼氳创鍑虹殑 logback.xml 鏂囦欢鍐呭鐨勯厤缃€傝繖閲屾垜浠敤 logback.xml 閰嶇疆鏂囦欢锛屼互鍓嶇殑 log4j.properties聽 鏂囦欢鍙互鐢?PropertiesTranslator 杞崲鎴?logback.xml 鏂囦欢鍐呭

logback.xml锛毬?

<?xml version="1.0" encoding="UTF-8"?>聽

聽 <configuration>聽

聽 聽 <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender"> 聽 聽 聽 聽 聽

聽 聽 聽 聽 聽<encoder charset="GBK">聽

聽 聽 聽 聽 聽 聽 <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>聽

聽 聽 聽 聽 聽</encoder>聽

聽 聽 聽</appender> 聽 聽聽

聽 聽 聽<root level="DEBUG">聽

聽 聽 聽 聽<appender-ref ref="stdout" />聽

聽 聽 聽</root>聽

聽 </configuration>聽

涓よ€呬娇鐢╯lf4j浠g爜涓€鏍锋病宸埆锛毬?

import org.slf4j.Logger;聽

import org.slf4j.LoggerFactory;聽

public class TestLogback {聽

聽 聽 private static final Logger logger = LoggerFactory.getLogger(TestLogback.class);聽

聽 聽public static void main(String[] args) {聽

聽 聽 聽 聽 logger.info("Hello {}","TestLogback");聽

聽 聽 }聽

}聽

java 常用日志框架