锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲日韩精品无码专区加勒比☆ ,亚洲福利精品一区二区三区,国精无码欧精品亚洲一区http://www.tkk7.com/watchzerg/zh-cnSun, 11 May 2025 15:57:12 GMTSun, 11 May 2025 15:57:12 GMT60logback_doc_manual_01_introduction_to_logbackhttp://www.tkk7.com/watchzerg/archive/2014/07/13/415757.html鐜嬫槦娓?/dc:creator>鐜嬫槦娓?/author>Sun, 13 Jul 2014 11:04:00 GMThttp://www.tkk7.com/watchzerg/archive/2014/07/13/415757.htmlhttp://www.tkk7.com/watchzerg/comments/415757.htmlhttp://www.tkk7.com/watchzerg/archive/2014/07/13/415757.html#Feedback0http://www.tkk7.com/watchzerg/comments/commentRss/415757.htmlhttp://www.tkk7.com/watchzerg/services/trackbacks/415757.html鏈榪戞妸logback鐨勬枃妗g炕浜嗕竴閬嶏紝寮勪簡浜涘崐絎旇鍗婄炕璇戠殑鏂囧瓧鍑烘潵錛屾湰鏉ユ墦綆椾粎浠呭瓨鍦╡vernote閲岀殑錛屼絾榪樻槸璐圭偣鍔熷か鍙戝嚭鏉ュ惂錛屽彲鑳戒負鍒漢鎻愪緵浜涘弬鑰冦?/div>
鐪嬫垜榪欐枃绔犳爣棰樿搗鐨勶紝瀵規悳绱㈠紩鎿庢媶璇嶆瀬绔殑涓嶅弸濂斤紝鍝囧搱鍝堝搱鍝?#8230;…
閾炬帴錛?/div>
slf4j絎旇
logback_doc_manual_01_introduction_to_logback
logback_doc_manual_02_architecture
logback_doc_manual_03_configuration
logback_doc_manual_04_appenders
logback_doc_manual_05_encoders
logback_doc_manual_06_layouts
logback_doc_manual_07_filters
logback_doc_manual_08_mapped_diagnostic_contexts
logback_doc_manual_09_logging_separation
logback_eclipse_plugin_beagle
logback_config_demo
logback-demo欏圭洰錛?/div>
     http://logback.qos.ch/demo.html
     閬囧埌鏈夐棶棰樼殑錛屽氨鎶婅繖涓」鐩嫈涓嬫潵鐪嬬湅銆?/div>
     渚嬪CyclicBufferAppender錛屽湪鏂囨。閲岃矊浼兼病鏈夋弿榪拌繃錛屽湪appender榪欎竴绔犱篃鎵句笉鍒般?/div>
     紺轟緥欏圭洰閲岋紝瀹炵幇“鍦╳eb欏甸潰涓婃煡鐪嬫渶榪?12鏉℃棩蹇?#8221;錛屾槸鎵嬪啓鐨凷ervlet錛歏iewLastLog.java
logback-access:
     http://logback.qos.ch/access.html 
     鍙互闆嗘垚鍒癹etty鎴栬卼omcat涓紝鎻愪緵寮哄ぇ鐨刪ttp-access鏃ュ織銆?/div>
     渚濊禆浜巐ogback-core錛堜笉渚濊禆slf4j鍜宭ogback-classic錛?/div>
     濡傛灉涓巘omcat6.x闆嗘垚錛屽彲鑳戒細宕╂簝鍝︼綖錛屽緩璁敤tomcat7.x銆傚疄鍦ㄦ兂鐢╰omcat6.x錛屽彲浠ョ敤logback-access鐗堟湰0.9.30
     鍙互鎷︽埅鍜屾墦鍗版瘡涓猦ttp鐨剅equest鍜宺esponse銆?/div>
     Apache Tomcat涓殑鏃ュ織鏄氳繃鍊熷姪Apache Commons Logging搴撳疄鐜扮殑錛岃繖涓簱瀵逛笉鍚岀殑鏃ュ織妗嗘灦鍋氫簡涓涓畝鍗曞寘瑁呫備嬌Tomcat鏈夎兘鍔涜褰曡法鏃ュ織綰у埆鐨勫灞傛鏃ュ織錛岃屼笖涓嶉渶瑕佷緷璧栫壒瀹氱殑鏃ュ織妗嗘灦銆?/div>
     浠嶵omcat 6.0寮濮嬶紝Tomcat寮曞叆涓涓Apache Commons Logging閲嶅懡鍚嶅寘鍚庣殑縐佹湁瀹炵幇錛屼粠鑰屽厑璁竪eb搴旂敤浣跨敤浠栦滑鑷繁鐙珛鐨勫師Apache Commons Logging搴撶殑lib鍖呫傚湪榛樿鐨勫彂甯冨寘涓紝Apache Commons Logging縐佹湁瀹炵幇鏄畝鍗曡紜紪鐮佸埌java.util.logging妗嗘灦銆?/div>
     瀹為檯浣跨敤涓紝閫氳繃閰嶇疆org.apache.catalina.valves.AccessLogValve鍙互璁﹖omcat鎵撳嵃璁塊棶鏃ュ織錛堥粯璁ょ鐢ㄦ帀鐨勶級


]]>logback_config_demohttp://www.tkk7.com/watchzerg/archive/2014/07/13/415756.html鐜嬫槦娓?/dc:creator>鐜嬫槦娓?/author>Sun, 13 Jul 2014 11:03:00 GMThttp://www.tkk7.com/watchzerg/archive/2014/07/13/415756.htmlhttp://www.tkk7.com/watchzerg/comments/415756.htmlhttp://www.tkk7.com/watchzerg/archive/2014/07/13/415756.html#Feedback0http://www.tkk7.com/watchzerg/comments/commentRss/415756.htmlhttp://www.tkk7.com/watchzerg/services/trackbacks/415756.html
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!-- <configuration scan="true" scanPeriod="60 seconds">  -->
 3 <configuration>
 4     <!-- print configuration status on console -->
 5     <statusListener class="ch.qos.logback.core.status.OnConsoleStatusListener"/>
 6     
 7     <!-- Beagle: eclipse plugin -->
 8     <consolePlugin />
 9     
10     <!-- log path -->
11     <property name="LOG_PATH" value="d:/log" />
12     <!-- <property resource="resource1.properties" /> -->
13     
14     <!-- console appender -->
15     <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
16         <encoder>
17             <pattern>
18                 %d{HH:mm:ss.SSS} [%t] %-5p  %c{1} - %m%n
19             </pattern>
20         </encoder>
21     </appender>
22     
23     <!-- default appender -->
24     <appender name="COMMON-DEFAULT-APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
25         <File>${LOG_PATH}/common-default.log</File>
26         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
27             <FileNamePattern>
28                 ${LOG_PATH}/common-default.%d.log.gz
29                 <!-- ${LOG_PATH}/%d{yyyy-MM,aux}/common-default.%d.log.gz -->
30             </FileNamePattern>
31         </rollingPolicy>
32         <encoder>
33             <Pattern>
34                 %d [%t] %-5p  %c{1} - %m%n
35             </Pattern>
36         </encoder>
37         <!-- <immediateFlush>false</immediateFlush>  -->
38     </appender>
39     
40     <!-- error appender -->
41     <appender name="COMMON-ERROR-APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
42         <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
43             <level>ERROR</level>
44         </filter>
45         <File>${LOG_PATH}/common-error.log</File>
46         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
47             <FileNamePattern>
48                 ${LOG_PATH}/common-error.%d.log.gz
49                 <!-- ${LOG_PATH}/%d{yyyy-MM,aux}/common-error.%d.log.gz -->
50             </FileNamePattern>
51         </rollingPolicy>
52         <encoder>
53             <Pattern>
54                 %d [%t] %-5p  %c{1} - %m%n
55             </Pattern>
56         </encoder>
57         <!-- <immediateFlush>false</immediateFlush>  -->
58     </appender>
59 
60     <!-- root logger -->
61     <root>
62         <level value="DEBUG"/>
63         <appender-ref ref="STDOUT"/>
64         <appender-ref ref="COMMON-DEFAULT-APPENDER"/>
65         <appender-ref ref="COMMON-ERROR-APPENDER"/>
66     </root>
67 
68 </configuration>
69 


]]>
logback_eclipse_plugin_beaglehttp://www.tkk7.com/watchzerg/archive/2014/07/13/415755.html鐜嬫槦娓?/dc:creator>鐜嬫槦娓?/author>Sun, 13 Jul 2014 11:01:00 GMThttp://www.tkk7.com/watchzerg/archive/2014/07/13/415755.htmlhttp://www.tkk7.com/watchzerg/comments/415755.htmlhttp://www.tkk7.com/watchzerg/archive/2014/07/13/415755.html#Feedback0http://www.tkk7.com/watchzerg/comments/commentRss/415755.htmlhttp://www.tkk7.com/watchzerg/services/trackbacks/415755.html
鍏堝畨瑁呬緷璧栨彃浠訛細
http://download.eclipse.org/technology/nebula/snapshot    (娉ㄦ剰榪欎釜鏄ǔ瀹氱殑release鐗堢殑鍦板潃錛屽彧闇瑕佸畨瑁?#8220;Nubula Release Individual Widgets”涓殑“Nebula Grid Feature”鍗沖彲)
鍐嶅畨瑁卨ogback-beagle鎻掍歡錛?/div>
http://logback.qos.ch/p2/ ( "Logback" "Logback Beagle" "SLF4J"榪欎笁涓兘寰楅?
瀹屾垚鍚庢寜“alt-shift-Q,Q”寮瑰嚭view閫夋嫨妗嗭紝鎵懼埌beagle鎵撳紑鍗沖彲錛堜箣鍚庨渶瑕佸湪logback-test.xml閲岄厤緗?lt;consolePlugin />錛屽弬瑙乴ogback鏂囨。錛夈?/div>
鍦╨ogback-test.xml閲屽姞涓婇厤緗?lt;consolePlugin />鍗沖彲
     <configuration debug="true">
       <!-- sends logs to logback-beagle -->
       <consolePlugin />
     </configuration>
     ——瀹為檯涓婅繖涓厤緗細鑷姩鍒涘緩涓涓猄ocketAppender錛屽茍鎶婃棩蹇楀彂鍒版湰鏈虹殑4321绔彛銆?/div>
鍗曞嚮鍋滄婊氬姩錛屽弻鍑誨紑濮嬫粴鍔?/div>
鍙抽敭鑿滃崟鍙互璺寵漿鍒拌皟鐢ㄨ錛屼篃鍙互鏌ョ湅鏈澶?琛岃皟鐢ㄦ爤
閰嶇疆錛?/div>
eclipse鐨刾reference閲?
     Run/Debug - Beagle
          鍦ㄨ繖閲屽彲浠ヨ嚜瀹氫箟鎺у埗鍙拌緭鍑虹殑pattern
     General - Appearance - Colors and Fonts
          鍙互鍗曠嫭瀵笲eagle璁劇疆瀛椾綋


]]>logback_doc_manual_09_logging_separationhttp://www.tkk7.com/watchzerg/archive/2014/07/13/415754.html鐜嬫槦娓?/dc:creator>鐜嬫槦娓?/author>Sun, 13 Jul 2014 11:00:00 GMThttp://www.tkk7.com/watchzerg/archive/2014/07/13/415754.htmlhttp://www.tkk7.com/watchzerg/comments/415754.htmlhttp://www.tkk7.com/watchzerg/archive/2014/07/13/415754.html#Feedback0http://www.tkk7.com/watchzerg/comments/commentRss/415754.htmlhttp://www.tkk7.com/watchzerg/services/trackbacks/415754.html
涓昏澶勭悊澶氫釜搴旂敤紼嬪簭榪愯鍦ㄥ悓涓涓獁eb瀹瑰櫒錛屽茍涓旀瘡涓簲鐢ㄤ嬌鐢ㄥ悇鑷嫭绔嬬殑鏃ュ織鐜銆?/div>
——鎯蟲兂涓涓猼omcat榪愯浜嗗涓」鐩?#8212;—涔熷氨鏄?#8220;涓涓狫VM錛屽涓狢lassLoader錛屾瘡涓狢lassLoader鎷ユ湁鑷繁鐙珛鐨凩ogger Context”鐨勯棶棰樸?/div>
Context Selectors
     璋冪敤LoggerFactory.getLogger("foo")鐨勬椂鍊欙紝浼氳姹係LF4J緇戝畾涓涓狪LoggerFactory錛屽鏋淪LF4J浣跨敤鐨勬槸logback錛岄偅涔?#8220;緇戝畾ILoggerFactory”鐨勬柟娉曪紝浼氫唬鐞嗙粰涓涓狢ontextSelector瀹炰緥錛岃瀹炰緥浼氭牴鎹儏鍐佃繑鍥炴渶鍚堥傜殑LoggerContext瀵硅薄——榪欎釜瀵硅薄瀹炵幇浜咺LoggerFactory鎺ュ彛銆?/div>
     榛樿鎬繪槸榪斿洖DefaultContextSelector錛屽彲浠ュ湪緋葷粺灞炴ч噷閫氳繃logback.ContextSelector灞炴ф寚瀹氳嚜宸辯殑綾匯?/div>
ContextJNDISelector
     鏍規嵁JNDI鏌ユ壘Selector——榪欐牱鍙互鍦ㄥ悇涓」鐩殑web.xml閲岄厤緗嚜宸辯殑JNDI鐜鍙橀噺銆?/div>
     涓轟簡鍦ㄥ崟涓獁eb欏圭洰閲嶅惎鍜屽叧闂殑鏃跺欙紝瀵瑰簲鐨刲ogger Context鍙互琚洖鏀訛紝鏈濂介厤緗瓹ontextDetachingSCL鐩戝惉鍣?/div>
     涓嶈繃姣忔鑾峰彇logger閮芥煡鎵綣NDI澶參錛屽彲浠ラ厤緗甃oggerContextFilter榪囨護鍣ㄦ潵閬垮厤——浼氬湪姣忎釜http璇鋒眰鍒版潵鐨勬椂鍊欐妸logger context鏀懼湪綰跨▼鍐呴儴錛屼粠鑰屽厑璁鎬箣鍚庤煩榪嘕NDI鎼滅儲銆?/div>
     姝ゆ椂鏈濂芥妸logger鍏ㄥ0鏄庢垚static鐨勶紝鍑忓皯logger鐨勮幏鍙栨繪鏁般?/div>
Taming static references in shared libraries
     濡傛灉鏈変竴涓被灞炰簬鍏變韓鍖咃紝琚袱涓獁eb欏圭洰鍚屾椂寮曠敤
          1錛屽綋榪欎釜綾諱嬌鐢ㄩ潪闈欐乴ogger鏃訛紝涓鍒囪壇濂斤紝鏉ヨ嚜涓や釜web欏圭洰鐨勮皟鐢紝浼氳繑鍥炲悇鑷殑logger context銆?/div>
          2錛屽綋榪欎釜綾諱嬌鐢ㄩ潤鎬乴ogger鏃訛紝浼氶敊璇殑榪斿洖棣栨璋冪敤瀹冪殑web欏圭洰鐨刲ogger context——瀵硅繖涓棶棰楥ontextJNDISelector鏃犺兘涓哄姏錛坋luded a solution for eons... 鍝堝搱鍝堝搱錛?/div>
     瀵逛簬涓婅堪鐨?#8220;鏉ヨ嚜鍏辯被鐨勯潤鎬乴ogger錛岃幏鍙栦笉鍚岀殑logger context”鐨勯棶棰橈紝鏈夊嚑涓殑鍔炴硶錛?/div>
          1錛屽叡浜被鏀規垚闈為潤鎬乴ogger——涓鑸笉鐜板疄錛屽洜涓哄叡浜被鐨勬簮鐮佸線寰涓嶅彈欏圭洰鎺у埗銆?/div>
          2錛屾妸鍏變韓綾繪尓鍒皐eb欏圭洰閲?#8212;—涔熷鍛涳紝涓涓袱涓被榪樺ソ錛岄偅涔堝絎笁鏂逛緷璧栧拫寮勶紵
          3錛屾墍浠ヨ繕鏈変竴縐嶅彇宸х殑鍔炴硶錛氱敤SiftingAppender錛屾牴鎹甁NDI淇℃伅鎶婁笉鍚岀殑鏃ュ織鍒嗗埆杈撳嚭鍒頒笉鍚岀殑鏂囦歡閲屽幓錛坙ogback鎻愪緵浜咼NDIBasedContextDiscriminator甯姪鍋氳繖浜嬪効錛?#8212;—涔熷氨鏄錛屼袱涓」鐩垎浜悓涓涓猯ogger錛岀瓑鍒板叾鍏寵仈鐨刟ppender闇瑕佹妸event杈撳嚭鍒版枃浠舵椂錛屽啀涓存椂鍐沖畾杈撳嚭鍒板摢涓枃浠躲?/div>
     涓婅堪絎?縐嶆柟娉曟湁涓涓棶棰橈細
               鍋囧欏圭洰A鍜岄」鐩瓸閮戒嬌鐢ㄥ叡浜寘S銆?/div>
                    欏圭洰A鍚姩騫惰皟鐢⊿鐨勬椂鍊欙紝灝卞凡緇忔妸S鐨刲ogger context璁劇疆涓篈浜嗭紝鏃ュ織浼氬啓鍏.log涓?/div>
                    B鍚姩騫惰皟鐢⊿鐨勬椂鍊檒ogger contex渚濈劧鏄疉錛堜笉榪囧洜涓洪厤緗簡SiftingAppender鐨勫瓨鍦紝B鐨勬棩蹇椾緷鐒跺彲浠ュ啓鍒版紜殑B.log涓級
               ——涔熷氨鏄錛屽叡浜玪ogger鐨勯棶棰樺茍娌℃湁瀹炶川瑙e喅錛岃繖涓猯ogger榪樻槸鍙兘灞炰簬A鎴栬匓鍏朵腑涔嬩竴錛屽彧涓嶈繃logger鍦ㄥ啓鏃ュ織鍓嶆牴鎹甅DC閲岀殑JNDI鍙互灝嗘棩蹇楀啓鍒版紜殑鏂囦歡涓幓銆?/div>
               鑰屽垵濮嬪寲浜嗕袱涓笉鍚岀殑logger context閮芥寚鍚態.log錛屽瓨鍦ㄥ涓嚎紼嬪啓鍚屼竴涓枃浠剁殑涓嶅畨鍏ㄩ棶棰?#8212;—闇瑕佸appender閰嶇疆prudent鍙傛暟鏉ヨВ鍐籌紙浼氬獎鍝嶆ц兘錛夈?/div>
     錛堟甯鎬嬌鐢ㄩ兘鏄竴涓獁eb container閮ㄧ講涓涓獁eb欏圭洰錛屽緢灝戦亣鍒頒笂榪版儏鍐點傝繖閮ㄥ垎鏂囨。鐪嬬殑寰堣泲鐤?#8230;…錛?/div>


]]>logback_doc_manual_07_filtershttp://www.tkk7.com/watchzerg/archive/2014/07/13/415752.html鐜嬫槦娓?/dc:creator>鐜嬫槦娓?/author>Sun, 13 Jul 2014 10:59:00 GMThttp://www.tkk7.com/watchzerg/archive/2014/07/13/415752.htmlhttp://www.tkk7.com/watchzerg/comments/415752.htmlhttp://www.tkk7.com/watchzerg/archive/2014/07/13/415752.html#Feedback0http://www.tkk7.com/watchzerg/comments/commentRss/415752.htmlhttp://www.tkk7.com/watchzerg/services/trackbacks/415752.htmlhttp://logback.qos.ch/manual/filters.html
logback-classic鏈変袱縐峟ilter錛歊egular filters鍜宼urbo filters錛屾寕鍦╝ppender涓?/div>
Regular filters
     鍙湁涓涓猟ecide()鏂規硶錛岃繑鍥濪ENY, NEUTRAL or ACCEPT
LevelFilter
     <filter class="ch.qos.logback.classic.filter.LevelFilter">
      <level>INFO</level>
      <onMatch>ACCEPT</onMatch>
      <onMismatch>DENY</onMismatch>
     </filter>
ThresholdFilter
     楂樹簬鎴栫瓑浜庢寚瀹氭棩蹇楃駭鍒殑璁板綍錛屼細榪斿洖NEUTRAL
     <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
      <level>INFO</level>
     </filter>     
EvaluatorFilter
     EventEvaluator鐨勫疄鐜板垽鏂煇涓潯浠舵槸鍚︽弧瓚熾?/div>
     
     GEventEvaluator
          鎺ュ彈groovy璇硶鐨勫竷灝旇〃杈懼紡浣滀負鍒ゆ柇鏉′歡錛岄渶瑕佷緷璧朑roovy榪愯鏃訛紝琛ㄨ揪寮忚鍙ュ湪閰嶇疆鐨勬椂鍊欏畬鎴愮紪璇戙?/div>
          logback浼氳嚜鍔ㄥ皢鐩爣浜嬩歡浣滀負涓涓彉閲忎紶榪涙潵錛屽彲浠ョ敤“event”鎴栬?#8220;e”鏉ュ紩鐢ㄣ?/div>
          TRACE, DEBUG, INFO, WARN and ERROR榪欎簺綰у埆涔熷紩鍏ヤ簡錛屾墍浠ュ彲浠ヨ繖鏍峰垽鏂浉絳夛細 "event.level == DEBUG" 銆?/div>
          鍏朵粬姣旇緝絎︼紝澶т簬灝忎簬錛岄渶瑕佽漿鎹㈡垚int鍐嶆瘮杈冦?/div>
    <filter class="ch.qos.logback.core.filter.EvaluatorFilter">      
      <evaluator class="ch.qos.logback.classic.boolex.GEventEvaluator"> 
        <expression>
           e.level.toInt() >= WARN.toInt() &amp;&amp;  <!-- Stands for && in XML -->
           !(e.mdc?.get("req.userAgent") =~ /Googlebot|msnbot|Yahoo/ )
        </expression>
      </evaluator>
      <OnMismatch>DENY</OnMismatch>
      <OnMatch>NEUTRAL</OnMatch>
    </filter>
     JaninoEventEvaluator
          浣跨敤java琛ㄨ揪寮忥紝浣跨敤涓婃瘮鍩轟簬groovy鐨凣EventEvaluator綣佺悙錛屼絾鎵ц閫熷害鏇村揩銆?/div>
          璇︽儏鐣ャ?/div>
          
Matchers
     鎵ц涓婇潰鐨勮繃婊ゅ櫒鏃訛紝鍙互璋冪敤String.matches()鏂規硶錛屼絾浠d環鏄瘡嬈¢渶瑕侀噸緙栬瘧涓涓鍒橮attern瀵硅薄銆?/div>
     鎵浠ュ彲浠ラ鍏堝畾涔夊拰緙栬瘧涓涓紝浠ヤ究澶嶇敤銆?/div>
     璇︽儏鐣ャ?/div>
TurboFilters
     璺熸櫘閫氳繃婊ゅ櫒鍔熻兘涓鏍鳳紝浣嗘槸錛?/div>
          1錛孴urboFilter鏄窡logging context鍏寵仈鐨勶紝鑰屼笉鏄窡appender鍏寵仈銆備綔鐢ㄥ煙鏇村ぇ銆備笉浠呭湪鎸囧畾appender浣跨敤鏃訛紝鑰屼笖鍦ㄦ瘡嬈ogging璇鋒眰鏃墮兘浼氳璋冪敤銆?/div>
          2錛屼粬浠槸鍦↙oggingEvent瀵硅薄鍒涘緩涔嬪墠琚皟鐢紝榪囨護鏃朵笉闇瑕乪vent瀹炰緥鍋氬弬鏁幫紝鎵浠ユц兘鏇撮珮錛堝洜涓哄湪event鍒涘緩涔嬪墠灝卞凡緇忔墽琛岃繃婊や簡錛夈?/div>
     鍐呯疆浜嗕竴浜汿urboFilter錛?/div>
          MDCFilter     嫻嬭瘯鎸囧畾鐨勫兼槸鍚﹀瓨鍦ㄤ簬MDC涓?/div>
          DynamicThresholdFilter     鍩轟簬MDC鐨刱ey鍜宭evel鏉ラ檺嫻?/div>
          MarkerFilter     嫻嬭瘯鎸囧畾鐨刴arker鏄惁鍑虹幇鍦ㄨ姹備腑
          DuplicateMessageFilter
               鑷姩榪囨護鐩稿悓鐨勬秷鎭?/div>
                    浣跨敤綆鍗曠殑瀛楃涓叉瘮瀵?#8212;—鍗充嬌涓や釜瀛楃涓插熀鏈浉鍚岋紝鐩稿樊涓涓や釜瀛楁瘝錛氫篃浼氳璁や負涓嶅悓銆?/div>
                    浠呮瘮杈價aw瀛楃涓詫紝鐢▄}杞箟榪囩殑瀛楃涓蹭笉鍘繪瘮杈冦?/div>
                    鍙互閫氳繃AllowedRepetitions璁劇疆鍏佽鐨勯噸澶嶄笂闄愶紝瓚呰繃涓婇檺鐨勪細琚姏寮冦傞粯璁ゅぇ灝忎負5
                    闇瑕侀氳繃涓涓唴閮╟ache鏉ヤ繚瀛樿佺殑娑堟伅浠ヤ究鍒ゆ柇錛屽彲浠ラ氳繃CacheSize璁劇疆緙撳瓨澶у皬錛岄粯璁?00.
          
鍦╡valuator鐨別xpression閲岋紝灝唋ogging鏃墮棿涓庨」鐩惎鍔ㄦ椂闂村姣旓紝鍙互鎺у埗浠呰緭鍑?#8220;欏圭洰鍚姩鍚?0縐掑唴鐨勬煇綾誨瀷鏃ュ織”——榪欎釜瀵逛簬“紜鏌愪釜瀹氭椂浠誨姟鍦ㄥ惎鍔ㄦ椂鏄繍琛岀姸鎬?#8221;寰堟湁鐢紝渚嬪錛?/div>
<filter class="ch.qos.logback.core.filter.EvaluatorFilter">
  <evaluator name="loggingTaskEval">
    <expression>
      logger.getName().contains("LoggingTask") &amp;&amp;
      message.contains("Howdydy-diddly-ho") &amp;&amp;
      (timeStamp - event.getStartTime()) >= 20000
    </expression>
  </evaluator>
  <OnMatch>DENY</OnMatch>
</filter>


]]>logback_doc_manual_08_mapped_diagnostic_contextshttp://www.tkk7.com/watchzerg/archive/2014/07/13/415753.html鐜嬫槦娓?/dc:creator>鐜嬫槦娓?/author>Sun, 13 Jul 2014 10:59:00 GMThttp://www.tkk7.com/watchzerg/archive/2014/07/13/415753.htmlhttp://www.tkk7.com/watchzerg/comments/415753.htmlhttp://www.tkk7.com/watchzerg/archive/2014/07/13/415753.html#Feedback0http://www.tkk7.com/watchzerg/comments/commentRss/415753.htmlhttp://www.tkk7.com/watchzerg/services/trackbacks/415753.htmlhttp://logback.qos.ch/manual/mdc.html
MDC錛堟敞鎰忚繖涓被鍦╫rg.slf4j鍖呴噷錛?/div>
     鍩轟簬“澶氫釜綰跨▼鍚屾澶勭悊澶氫釜璇鋒眰”鐨勫亣璁炬潵璁捐鐨勶紝涓婁笅鏂囦俊鎭褰曘?/div>
          ——瀛愮嚎紼嬩細鑷姩鎷瘋礉鍙屼翰綰跨▼鐨勮繖綾諱俊鎭?/div>
          ——濡傛灉娌℃湁闄勫姞澶勭悊鐨勮瘽錛屾斁鍏ョ嚎紼嬫睜澶勭悊鐨勪換鍔′細涓㈠けMDC涓婁笅鏂囥?/div>
          璇ヨ璁″亣瀹氬悜MDC鏀炬暟鎹殑閫熷害涓嶄細澶揩銆?/div>
鏈甯哥敤鐨剋eb鍦烘櫙錛屾槸闆嗘垚鍦ㄤ竴涓猻ervlet鐨凢ilter涓紝鍦ㄨ姹傛椂杞藉叆MDC淇℃伅錛宒oFilter澶勭悊瀹屾垚鍚庡嵏杞組DC淇℃伅銆?/div>
——鏈濂藉湪“楠岃瘉鐢ㄦ埛”榪欎釜Filter涔嬪悗錛堟垨鑰呬箣涓級榪涜錛岃繖鏍峰彲浠ユ妸鐢ㄦ埛楠岃瘉淇℃伅錛堝寘鎷絾涓嶉檺浜庣敤鎴峰悕錛夊啓鍏DC銆?/div>
浜ょ粰綰跨▼姹犲鐞?submit)涔嬪墠錛歁DC.getCopyOfContextMap()錛屾妸榪斿洖鐨刴ap褰撲綔鍙傛暟浼犵粰浠誨姟綰跨▼
綰跨▼姹犲鐞嗕唬鐮佺殑絎竴琛岋細MDC.setContextMapValues()錛屾妸鎺ュ埌鐨刴ap鍙傛暟璁劇疆鍒版湰綰跨▼鐨凪DC涓紙鍒繕浜嗘渶鍚庢竻闄ゆ帀錛?/div>
MDCInsertingServletFilter
     灝唚eb璇鋒眰甯哥敤淇℃伅璁劇疆鍒癕DC涓細
          req.remoteHost as returned by the getRemoteHost() method
          req.xForwardedFor value of the "X-Forwarded-For" header
          req.requestURI       as returned by getRequestURI() method
          req.requestURL as returned by getRequestURL() method
          req.queryString as returned by getQueryString() method
          req.userAgent      value of the "User-Agent" header
     web.xml涓殑閰嶇疆
<filter>
  <filter-name>MDCInsertingServletFilter</filter-name>
  <filter-class>
    ch.qos.logback.classic.helpers.MDCInsertingServletFilter
  </filter-class>
</filter>
<filter-mapping>
  <filter-name>MDCInsertingServletFilter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping> 
     娉ㄦ剰filter欏哄簭錛岀粡榪囪filter榪囨護涔嬪悗錛屽叾瀹僨ilter鎵嶈兘鎵撳嵃鍑篗DC淇℃伅錛堢壒鍒槸struts涔嬬被渚濊禆filter澶勭悊涓婚昏緫鐨勶級
     浣跨敤渚嬪瓙錛?/div>
     %X{req.remoteHost} %X{req.requestURI}%n%d - %m%n
     ——鍏跺疄娌″澶ф剰涔夛紝榪樻槸鑷繁鍐欒繖涓猣ilter錛屾寫閫夎嚜宸辯殑鏈夋晥淇℃伅姣旇緝濂姐?/div>


]]>logback_doc_manual_05_encodershttp://www.tkk7.com/watchzerg/archive/2014/07/13/415750.html鐜嬫槦娓?/dc:creator>鐜嬫槦娓?/author>Sun, 13 Jul 2014 10:58:00 GMThttp://www.tkk7.com/watchzerg/archive/2014/07/13/415750.htmlhttp://www.tkk7.com/watchzerg/comments/415750.htmlhttp://www.tkk7.com/watchzerg/archive/2014/07/13/415750.html#Feedback0http://www.tkk7.com/watchzerg/comments/commentRss/415750.htmlhttp://www.tkk7.com/watchzerg/services/trackbacks/415750.htmlhttp://logback.qos.ch/manual/encoders.html
Encoder
     璐熻矗灝嗕簨浠跺璞¤漿鎹負瀛楄妭鏁扮粍.
     鐩墠鍙湁PatternLayoutEncoder鏄敮涓鏈夌敤鐨凟ncoder銆?/div>
LayoutWrappingEncoder
     鍏煎鐨勫寘瑁呭櫒錛堝洜涓鴻佺増鏈殑logback鏄煩榪嘐ncoder鐩存帴渚濊禆Layout鐨勶級
PatternLayoutEncoder
     閽堝PatternLayout錛堟渶甯哥敤鐨刲ayout錛夊畾鍒剁殑鍏煎鍖呰鍣ㄣ?/div>
     immediateFlush灞炴э細鏄惁灝嗘棩蹇楃珛鍒誨啓鍏ョ鐩橈紝榛樿涓簍rue銆傚皢榪欎釜閫夐」璁句負false鍙互杈鵑珮4鍒?鍊嶇殑鍚炲悙閲忋?/div>
<appender name="FILE" class="ch.qos.logback.core.FileAppender"> 
  <file>foo.log</file>
  <encoder>
    <pattern>%d %-5level [%thread] %logger{0}: %msg%n</pattern>
    <!-- this quadruples logging throughput -->
    <immediateFlush>false</immediateFlush>
  </encoder> 
</appender>
     outputPatternAsHeader灞炴э細鍦ㄦ棩蹇楁枃浠剁殑欏墮儴杈撳嚭涓琛屽瓧絎︿覆鏍峰紡錛岄粯璁lase銆?/div>
<appender name="FILE" class="ch.qos.logback.core.FileAppender"> 
  <file>foo.log</file>
  <encoder>
    <pattern>%d %-5level [%thread] %logger{0}: %msg%n</pattern>
    <outputPatternAsHeader>true</outputPatternAsHeader>
  </encoder> 
</appender>
     杈撳嚭緇撴灉錛?/div>
#logback.classic pattern: %d [%thread] %-5level %logger{36} - %msg%n
2012-04-26 14:54:38,461 [main] DEBUG com.foo.App - Hello world
2012-04-26 14:54:38,461 [main] DEBUG com.foo.App - Hi again


]]>logback_doc_manual_06_layoutshttp://www.tkk7.com/watchzerg/archive/2014/07/13/415751.html鐜嬫槦娓?/dc:creator>鐜嬫槦娓?/author>Sun, 13 Jul 2014 10:58:00 GMThttp://www.tkk7.com/watchzerg/archive/2014/07/13/415751.htmlhttp://www.tkk7.com/watchzerg/comments/415751.htmlhttp://www.tkk7.com/watchzerg/archive/2014/07/13/415751.html#Feedback0http://www.tkk7.com/watchzerg/comments/commentRss/415751.htmlhttp://www.tkk7.com/watchzerg/services/trackbacks/415751.htmlhttp://logback.qos.ch/manual/layouts.html
PatternLayout
     杞崲妯″紡綾諱技浜嶤璇█閲岀殑printf()銆?/div>
杞Щ瀛楃錛?/div>
     c{length}
     lo{length}
     logger{length}
          鍏朵腑鐨刲ength浠h〃杈撳嚭鐨刲ogger闀垮害銆?/div>
          璁句負0鐨勮瘽渚嬪錛屼粎杈撳嚭鏈鍙寵竟鐨刲ogger鍚嶃?/div>
          鍏朵綑鎯呭喌浼氳嚜鍔ㄨ綆楋紝灝介噺浣垮緱杈撳嚭鐨勬誨瓧絎︿覆闀垮害灝忎簬鎸囧畾闀垮害——浣嗘槸錛屾渶鍙寵竟鐨刲ogger鍚嶇О鏃犺濡備綍浼氬畬鏁翠繚鐣欙紝鍚屾椂鍓嶉潰鐨勬瘡涓綰ogger錛屾渶灝戜細琚簿綆鍒?涓瓧絎︺?/div>
          ——%c{1}
     C{length}
     class{length}
          鎵撳嵃璋冪敤鑰呯殑綾誨悕縐幫紝璁劇疆鏂規硶涓庝笂闈竴鏍楓?/div>
          鎬ц兘涓嶉珮銆?/div>
     contextName
     cn
          鎵撳嵃logger鍦╡vent鏈鍒濈粦瀹氱殑logger context鐨勫悕縐般?/div>
     d{pattern}
     date{pattern}
     d{pattern, timezone}
     date{pattern, timezone}
          杈撳叆鏃ュ織鏃墮棿錛屼嬌鐢╦ava.text.SimpleDateFormat鐨勬棩鏈熸牸寮忓寲鏂規硶銆?/div>
          濡傛灉涓嶆寚瀹氭棩鏈熸牸寮忥紝榛樿浣跨敤ISO8601錛屼篃灝辨槸2006-10-20 14:06:49,812榪欑褰㈠紡銆?/div>
          ——%d
     F / file
          杈撳嚭java婧愭枃浠剁殑鍚嶇О銆?/div>
          鎬ц兘涓嶉珮銆?/div>
     caller{depth}
     caller{depth, evaluator-1, ... evaluator-n}
          鎵撳嵃鏃ュ織浜嬩歡鐨勮皟鐢ㄥ爢鏍堛?/div>
          浣跨敤璇勪及鍣╡valuator鍐沖畾鏄惁鎵撳嵃銆?/div>
     L
     line
          杈撳嚭鏃ュ織璁板綍璇鋒眰鍙戣搗鐨勮鏁般?/div>
          鎬ц兘涓嶉珮銆?/div>
     m
     msg
     message
          鏃ュ織姝f枃
          ——%m
     M
     method
          鏃ュ織璋冪敤鏂規硶鍚嶃?/div>
          鎬ц兘涓嶉珮
     n
          鎿嶄綔緋葷粺瀵瑰簲鐨勬崲琛岀
          ——%n
     p
     le
     level
          鏃ュ織絳夌駭
     r
     relative
          搴旂敤紼嬪簭鍚姩鍒版棩蹇楀垱寤虹殑鐩稿鏃墮棿
     t
     thread
          綰跨▼鍚?/div>
          ——%t
     X{key:-defaultVal}
     mdc{key:-defaultVal}
          MDC淇℃伅
     ex{depth} 
     exception{depth} 
     throwable{depth} 
     ex{depth, evaluator-1, ..., evaluator-n} 
     exception{depth, evaluator-1, ..., evaluator-n} 
     throwable{depth, evaluator-1, ..., evaluator-n}
          杈撳嚭寮傚父鍫嗘爤娣卞害錛堝鏋滄湁鐨勮瘽錛夛紝榛樿full鍏ㄩ儴杈撳嚭銆?/div>
          鍙互鎸囧畾鐨勫弬鏁板鹼細
               short錛氭墦鍗板爢鏍堢殑絎竴琛?/div>
               full錛氭墦鍗版墍鏈夎
               浠諱綍鏁板瓧錛氭寚瀹氳鏁?/div>
          浣跨敤璇勪及鍣╡valuator鍐沖畾鏄惁鎵撳嵃銆?/div>
     xEx{depth} 
     xException{depth} 
     xThrowable{depth} 
     xEx{depth, evaluator-1, ..., evaluator-n} 
     xException{depth, evaluator-1, ..., evaluator-n} 
     xThrowable{depth, evaluator-1, ..., evaluator-n}
          璺熶笂闈㈢殑綾諱技錛屼絾鏄檮鍔犱簡鍖呬俊鎭?/div>
          濡傛灉鍖呬俊鎭笉鍑嗙‘錛堟槸鐚滄祴鐨勶級錛岄偅涔堜細鑷姩鍦ㄥ寘淇℃伅鍓嶉潰闄勫姞涓涓?#8220;~”瀛楃銆?/div>
          濡傛灉鍦ㄦ棩蹇椾俊鎭ā寮忛噷錛屾湭鎸囧畾浠諱綍寮傚父鏍煎紡錛岄偅涔堢郴緇熶細鑷姩鍦ㄦ湯灝懼姞涓婁竴涓?xEx銆?/div>
          濡傛灉涓嶆兂鎵撳嵃鍖呬俊鎭紙渚嬪netbean閲屼細鍑洪棶棰橈級錛岄偅涔堝湪鏃ュ織妯″紡鐨勬湯灝炬槑紜寚瀹?ex鍗沖彲錛屽氨浼氳緭鍑轟笉鍖呭惈鍖呬俊鎭殑鍫嗘爤銆?/div>
          濡傛灉鎯充笉鎵撳嵃浠諱綍寮傚父鍫嗘爤淇℃伅錛屽彲浠ヤ嬌鐢?nopex銆?/div>
          ——%xEx
     nopex 
     nopexception          
          鍔犱笂%nopex鍙互闃繪緋葷粺鑷姩鍦ㄦ棩蹇楁ā寮忔湯灝炬坊鍔?xEx——涔熷氨鏄畬鍏ㄧ姝㈠紓甯稿爢鏍堟墦鍗般?/div>
     marker
          杈撳嚭鍏寵仈鐨刴arker淇℃伅錛屽鏋渕arker澶氱駭鍏寵仈錛屼細閮芥墦鍗板嚭鏉ャ?/div>
     property{key}
          杈撳嚭key鍏寵仈鐨勫睘鎬?#8212;—瀹氫箟鍦╨ogger context鎴栬卻ystem properties閲岄潰銆?/div>
     replace(p){r, t}
          灝唒涓殑鎵鏈夌鍚坮姝e垯鐨勫瓧絎︿覆錛岄兘鏇挎崲鎴恡銆?/div>
          渚嬪%replace(%logger%msg){'\.', '/'}錛屼細灝嗚緭鍑虹殑logger鍜宮sg淇℃伅涓殑鐐瑰彿閮芥浛鎹㈡垚鏂滄潬銆?/div>
     rEx{depth} 
     rootException{depth} 
     rEx{depth, evaluator-1, ..., evaluator-n} 
     rootException{depth, evaluator-1, ..., evaluator-n}
          綾諱技浜巟Ex錛屼篃浼氭墦鍗板紓甯哥殑鍖呬俊鎭紝浣嗘槸浼氬皢root exception鎵撳嵃鍒板墠闈紝璺熸櫘閫氱殑寮傚父鎵撳嵃欏哄簭鏄弽鐫鐨勩?/div>
     杞箟鐧懼垎鍙鳳細 \%
     姝e父鎯呭喌涓嬭漿涔夊瓧絎︿細琚紜垎鍓詫紝浣嗘湁浜涙椂鍊欎緥澶栵紝渚嬪%date%nHello錛岀郴緇熶細瑙f瀽%nHello澶辮觸銆傚鏋滅湡鐨勯渶瑕佸湪%n鍚庣揣璺熶竴涓狧ello錛屽彲浠ヨ繖鏍鳳細%date%n{}Hello
     鎴戜竴鑸敤榪欎釜錛?/div>
     %d [%t] %-5p  %c{1} - %m%n
------------------------------------------------------------------
Format modifiers
     鎺у埗鏁版嵁孌電殑琛ラ綈銆?br />      渚嬪 %20.30logger 
          濡傛灉logger闀垮害灝忎簬20錛屽垯浠庡乏杈圭敤絀烘牸琛ラ綈錛涘鏋渓ogger闀垮害澶т簬30錛屽垯浠庡紑澶?宸﹁竟)鍒囧幓澶氫綑瀛楃銆?/div>
          濡傛灉20鎴栬?0鍓嶉潰鏈夎礋鍙鳳紝鍒欏乏鍙抽鍊掋?/div>
     鍋囧鎯崇粰鏃ュ織綰у埆鍙緭鍑?涓瓧絎︼紙T,D,W,I,E錛夛紝涓嶉渶瑕佽嚜宸卞啓涓涓狢onverter錛岃屽彧闇瑕侀厤緗竴涓嬪嵆鍙細%.-1level
杞箟閫夐」錛?/div>
     濡傛灉杞箟閫夐」閲岄潰鍖呭惈鐗規畩瀛楃錛堢壒鍒槸鍦ㄤ嬌鐢ㄦ鍒欒〃杈懼紡鐨勬椂鍊欙級錛屼緥濡傚ぇ灝忔嫭鍙楓侀楀彿銆佺┖鏍鹼紝閭d箞鍙互鐢ㄥ崟寮曞彿鎴栧弻寮曞彿鎷搗鏉ワ紝渚嬪錛?/div>
          <pattern>%-5level - %replace(%msg){'\d{14,16}', 'XXXX'}%n</pattern>
     ——榪欎釜鍙互鎶?4鍒?6浣嶇殑鏁板瓧錛堜俊鐢ㄥ崱鍙鳳級杞崲涓篨XXX銆?/div>
------------------------------------------------------------------
鎷彿鐨勭壒孌婁綔鐢細
     %-30(%d{HH:mm:ss.SSS} [%thread]) %-5level %logger{32} - %msg%n
     鍙互璁╂嫭鍙烽噷鐨勪袱涓〃杈懼紡鑱斿悎璧鋒潵鎸夌収30涓瓧絎﹁ˉ榻愩?/div>
     鎷彿鍙互鐢ㄥ弽鏂滄潬杞箟錛歕(%d{HH:mm:ss.SSS} [%thread]\)
------------------------------------------------------------------
Coloring
     鐫鑹詫紝window闇瑕佸紩鍏跺畠鍖咃紝linux鍜宮ac os鏈韓鏀寔鐫鑹層?/div>
     鏍蜂緥錛?lt;pattern>[%thread] %highlight(%-5level) %cyan(%logger{15}) - %msg %n</pattern>
          %highlight浼氬皢ERROR璁句負綰㈣壊鍔犵矖錛學ARN璁句負綰㈣壊錛孖NFO璁句負钃濊壊錛屽叾浣欓粯璁ゃ?/div>
          %cyan浼氬皢logger鍚嶇О璁句負钃濈豢鑹層?/div>
------------------------------------------------------------------
Evaluators
     EventEvaluator綾葷殑瀹炵幇錛岀敤鏉ヨ瘎浼頒竴涓簨浠舵槸鍚︾鍚堟墦鍗版潯浠躲?/div>
  <evaluator name="DISP_CALLER_EVAL">
    <expression>logger.contains("chapters.layouts") &amp;&amp; \
      message.contains("who calls thee")</expression>
  </evaluator>
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> 
    <encoder>
      <pattern>
        %-4relative [%thread] %-5level - %msg%n%caller{2, DISP_CALLER_EVAL}
      </pattern>
    </encoder>
  </appender>
     娉ㄦ剰鍥犱負xml鐨勫叧緋伙紝瑕佺敤&amp;杞箟&
     搴旂敤鍦烘櫙錛?/div>
          渚嬪錛屽鏋滄棩蹇楃駭鍒槸WARN浠ヤ笂錛屽茍涓攍ogger鏄潵鑷竴涓儲鍔℃ā鍧?#8212;—閭d箞灝辨墦鍗癱aller淇℃伅銆?/div>
     娉ㄦ剰錛?/div>
          鍦?caller杞箟妯″紡涓紝褰揈valuators榪斿洖true鐨勬椂鍊欐墠杈撳嚭銆?/div>
          鍦?ex杞箟妯″紡涓紝褰揈valuatorstrue鐨勬椂鍊欎笉杈撳嚭銆?/div>
     渚嬪涓嬮潰鐨勯厤緗紝褰撳紓甯稿璞′負TestException鏃訛紝涓嶈緭鍑恒?/div>
  <evaluator name="DISPLAY_EX_EVAL">
    <expression>throwable != null &amp;&amp; throwable instanceof  \
      chapters.layouts.TestException</expression>
  </evaluator>
        
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>%msg%n%ex{full, DISPLAY_EX_EVAL}</pattern>
    </encoder>
  </appender>
------------------------------------------------------------------
Creating a custom conversion specifier
     鐣?/div>
------------------------------------------------------------------
HTMLLayout
     浣跨敤html琛ㄦ牸鏉ュ竷灞鏃ュ織淇℃伅銆?/div>
     鍙互浣跨敤鏅氱殑pattern杞箟絎︼紝浣嗚漿涔夊瓧絎︿箣鍓嶏紝涓嶈鐢ㄥ寘鎷┖鏍煎湪鍐呯殑浠諱綍瀛楃鍒嗛殧銆?/div>
  <appender name="FILE" class="ch.qos.logback.core.FileAppender">
    <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
      <layout class="ch.qos.logback.classic.html.HTMLLayout">
        <pattern>%relative%thread%mdc%level%logger%msg</pattern>
      </layout>
    </encoder>
    <file>test.html</file>
  </appender>
     HTMLLayout浼氳嚜鍔ㄥ垱寤轟竴涓狣efaultThrowableRenderer錛屽皢寮傚父淇℃伅鎵撳嵃鍒板畬鏁寸殑涓琛岄噷銆傚鏋滀笉鎯寵繖鏍鳳紝鍙互鎸囧畾涓涓狽OPThrowableRenderer銆?/div>
鐢–SS鎸囧畾琛ㄦ牸鐨勬牱寮忥細鐣?/div>
璇ayout鏈甯歌鐨勭敤娉曟槸閰嶅悎SMTPAppender錛屽彂閫乭tml鏍煎紡鐨勬棩蹇楅偖浠躲?/div>
------------------------------------------------------------------
Logback access
     鐣?/div>


]]>logback_doc_manual_04_appendershttp://www.tkk7.com/watchzerg/archive/2014/07/13/415749.html鐜嬫槦娓?/dc:creator>鐜嬫槦娓?/author>Sun, 13 Jul 2014 10:57:00 GMThttp://www.tkk7.com/watchzerg/archive/2014/07/13/415749.htmlhttp://www.tkk7.com/watchzerg/comments/415749.htmlhttp://www.tkk7.com/watchzerg/archive/2014/07/13/415749.html#Feedback0http://www.tkk7.com/watchzerg/comments/commentRss/415749.htmlhttp://www.tkk7.com/watchzerg/services/trackbacks/415749.htmlhttp://logback.qos.ch/manual/appenders.html
Appender閮介泦鎴恈h.qos.logback.core.Appender鎺ュ彛銆?/div>
姣忎釜Appender鍙互緇戝畾鑻ュ共涓狥ilter銆?/div>
姣忎釜Appender鍙互灝嗕換鍔′唬鐞嗙粰Layout鎴栬匛ncoder銆?/div>
姣忎釜Layout鎴栬匛ncoder鍙兘灞炰簬1涓狝ppender銆?/div>
Appener涔熷彲浠ヤ笉鍖呭惈Layout鎴栬卐ncoder錛屼緥濡係ocketAppender錛岀洿鎺ユ妸Event搴忓垪鍖栦紶杈撱?/div>
ch.qos.logback.core.AppenderBase榪欐槸涓涓娊璞$被錛屽Appender鎺ュ彛鎻愪緵浜嗛鏋跺疄鐜幫紝綰跨▼瀹夊叏銆?/div>
ch.qos.logback.core.UnsynchronizedAppenderBase鏄搴旂殑綰跨▼涓嶅畨鍏ㄧ殑綾伙紝浣嗘槸鍙互灝嗙嚎紼嬪畨鍏ㄦу鎵樼粰涓嬩竴灞傜殑綾伙紙渚嬪OutputStream錛?/div>
OutputStreamAppender鏄枃浠惰緭鍑哄拰鎺у埗鍙拌緭鍑篈ppender鐨勭埗綾伙紝綾誨眰嬈$粨鏋勫涓嬶細


ConsoleAppender
     杈撳嚭鍒癝ystem.out or System.err
鍙厤緗睘鎬э細
     encoder
     target:     榛樿鏄疭ystem.out
     withJansi錛?    榛樿false錛岀敤鏉ュ湪windows涓敮鎸佹帶鍒跺彴鑹插僵鐨?/div>
鏍蜂緥錛?/div>
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>%-4relative [%thread] %-5level %logger{35} - %msg %n</pattern>
    </encoder>
  </appender>
----------------------------------------------------------
FileAppender
     鍐欏叆鍒版枃浠訛紙鏂版秷鎭埌鏉ワ紝鍐欏叆鍓嶏紝鎵嶄細鍒ゆ柇鏄惁璇ュ垎鍓叉枃浠剁瓑錛?/div>
鍙厤緗睘鎬э細
     append錛?    鏂囦歡榪藉姞錛岄粯璁や負true
     encoder錛?    
     file錛?    鏂囦歡璺緞鍜屽悕璇嶏紙濡傛灉windows涓嬶紝璁板緱鍒嗛殧絎﹁漿涔夛級
     prudent錛?    璋ㄦ厧妯″紡錛屼笉鍚孞VM錛堢敋鑷沖瓨鍦ㄤ簬涓嶅悓涓繪満涓婏級瀹夊叏鐨勫啓鍏ュ悓涓涓枃浠躲傞粯璁ゅ叧闂?/div>
榛樿姣忚閮絝lush鍒扮鐩橈紝鍙互淇敼Encoder鐨刬mmediateFlush灞炴ф潵鏀瑰彉榪欎竴琛屼負銆?/div>
鏍蜂緥錛?/div>
  <appender name="FILE" class="ch.qos.logback.core.FileAppender">
    <file>testFile.log</file>
    <append>true</append>
    <encoder>
      <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
    </encoder>
  </appender>
鍞竴鍚嶈瘝鐨勮褰曟枃浠訛紙閫氳繃鍚姩鏃墮棿鎴籌級錛?/div>
  <timestamp key="bySecond" datePattern="yyyyMMdd'T'HHmmss"/>
  <appender name="FILE" class="ch.qos.logback.core.FileAppender">
    <file>log-${bySecond}.txt</file>
    <encoder>
      <pattern>%logger{35} - %msg%n</pattern>
    </encoder>
  </appender>
——榪欐牱灝卞彲浠ュ湪姣忔欏圭洰鍚姩鏃剁敓鎴愪竴涓柊鐨勬枃浠躲?/div>
榛樿鏄嬌鐢▁ml瑙f瀽鐨勬椂闂達紝涔熷彲浠ユ寚瀹氫嬌鐢╨og context鐨勫垱寤烘椂闂達細
     <timestamp key="bySecond" datePattern="yyyyMMdd'T'HHmmss" 
             timeReference="contextBirth"/>
----------------------------------------------------------
RollingFileAppender
     婊氬姩璁板綍鏃ュ織鏂囦歡
     鏈変袱涓瓙緇勪歡錛?/div>
          RollingPolicy ——鎺ョ“婊氬姩”鎿嶄綔錛屾帶鍒惰鎿嶄綔濡備綍鍙戠敓
          TriggeringPolicy ——鍐沖畾婊氬姩鎿嶄綔鏄惁鍙戠敓錛屼綍鏃跺彂鐢?/div>
     榛樿鎯呭喌涓嬶紝蹇呴』鍚屾椂鍚湁涓婅堪涓や釜緇勪歡銆備笉榪囨湁鐨凴ollingPolicy涔熷疄鐜頒簡鍚庤呯殑鎺ュ彛錛岄偅涔堝彲浠ヨ韓鍏?鑱屻?/div>
鍙厤緗睘鎬э細
     file錛?/div>
     append錛?/div>
     encoder錛?/div>
     rollingPolicy錛?/div>
     triggeringPolicy錛?/div>
     prudent錛?/div>
RollingPolicy
     鍖呭惈鐨勬搷浣滐細灝嗗綋鍓嶇殑鏃ュ織鏂囦歡褰掓。錛堝茍閲嶅懡鍚嶏級錛屽帇緙╋紙濡傛灉闇瑕侊級
TimeBasedRollingPolicy
     鏈甯哥敤鐨勶紝鍩轟簬鏃墮棿婊氬姩錛屽悓鏃跺疄鐜頒簡RollingPolicy鍜孴riggeringPolicy
     鍙厤緗睘鎬э細
          fileNamePattern錛?    鏂囦歡鍚嶅尮閰嶆牸寮?/div>
               鏂囦歡鍚?鏃ユ湡瀹氫箟鍣?#8220;%d”
               鏃ユ湡瀹氫箟鍣ㄧ殑鏍煎紡鍦⊿impleDateFormat涓畾涔?/div>
               婊氬姩鍛ㄦ湡鏄氳繃鏃ユ湡瀹氫箟鍣ㄦ帹鏂嚭鏉ョ殑
               鍏剁埗鍏冪礌RollingFileAppender涓璮ile灞炴у彲浠ョ渷鐣ワ紙鍥犱負鍙互鐢╢ileNamePattern鐚滄祴鍑哄綋鍓嶆椂闂寸殑鏃ュ織鍚嶏級
                    涔熷彲浠ヤ笉鐪佺暐錛岃繖鏍峰彲浠ヤ負“褰撳墠鏃ュ織鏂囦歡”鍜?#8220;褰掓。鏃ュ織鏂囦歡”鍒嗗埆鍒跺畾涓嶅悓鐨勮礬寰?/div>
               鏃ュ織瀹氫箟鍣ㄤ腑鐨勬鍙嶆枩鏉犻兘浼氳璁や負鏄洰褰曞垎闅旂
               鍙互鎸囧畾澶氫釜鏃ユ湡瀹氫箟鍣紝浣嗗彧鑳芥湁1涓槸涓昏鐨勶紝鍏朵綑鐨勫繀欏繪爣璁頒負aux錛堣緟鍔╃殑錛?/div>
          maxHistory錛?    鏈澶ф枃浠舵暟
          cleanHistoryOnStart錛?    鍚姩鏃舵竻闄ゅ巻鍙插綊妗f棩蹇?/div>
     瀵筬ileNamePattern鐨勬洿璇︾粏鐨勮В閲婂拰紺轟緥錛?/div>
          /wombat/foo.%d   
               鎸夊ぉ鍒嗛殧鏃ュ織
               鏈寚瀹氭牸寮忥紝鎵浠ラ粯璁や負yyyy-MM-dd錛堟寜澶╂粴鍔級
               濡傛灉鍦≧ollingFileAppender涓寚瀹氫簡file錛堥粯璁ゆ棩蹇楁枃浠跺悕錛夛細
                    浠婂ぉ鏃ュ織涓?/wombat/foo.2006-11-24
                    鏄ㄥぉ鏃ュ織涓?/wombat/foo.2006-11-23
               濡傛灉娌℃湁鍦≧ollingFileAppender涓寚瀹歠ile涓?#8220;/wombat/foo.txt”錛?/div>
                    浠婂ぉ鏃ュ織涓?/wombat/foo.txt
                    鏄ㄥぉ鏃ュ織涓?/wombat/foo.2006-11-23
               ——鍏跺疄涓嶆寚瀹氶粯璁ゆ棩蹇楁枃浠跺悕鐨勬柟寮忔洿濂斤紝鍥犱負閬垮厤浜嗘粴鍔ㄦ椂閲嶅懡鍚嶆搷浣滐紝涔熷氨閬垮厤浜嗘綔鍦ㄥ紓甯搞?/div>
          /wombat/%d{yyyy/MM}/foo.txt
               鎸?#8220;騫?鏈?#8221;鍒嗕袱綰ф枃浠跺す錛屾枃浠跺悕鍥哄畾涓?#8220;foo.txt”
               濡傛灉鍦≧ollingFileAppender涓寚瀹氫簡file錛堥粯璁ゆ棩蹇楁枃浠跺悕錛夛細
                    2006騫?0鏈堟棩蹇椾負 /wombat/2006/10/foo.txt
                    2006騫?1鏈堟棩蹇椾負 /wombat/2006/11/foo.txt
               濡傛灉娌℃湁鍦≧ollingFileAppender涓寚瀹歠ile涓?#8220;/wombat/foo.txt”錛?/div>
                    褰撳墠姝e湪鍐欑殑鏃ュ織姘歌繙涓?nbsp;/wombat/foo.txt
                    褰掓。鐨勬棩蹇楁牸寮忎負 /wombat/2006/10/foo.txt
          /wombat/foo.%d{yyyy-ww}.log
               姣忎釜鏄熸湡褰掓。涓涓柊鏂囦歡錛堟敞鎰忓叿浣?#8220;鍝ぉ綆楁槸涓涓槦鏈熺殑絎竴澶?#8221;鍙栧喅浜庣郴緇焞ocale灞炴э級
          /wombat/foo%d{yyyy-MM-dd_HH}.log
               姣忓皬鏃朵竴嬈″綊妗?/div>
          /wombat/foo%d{yyyy-MM-dd_HH-mm}.log
               姣忓垎閽熶竴嬈″綊妗?/div>
          /foo/%d{yyyy-MM,aux}/%d.log
               姣忓ぉ涓嬈″綊妗o紝浣嗘瘡涓湀涓涓柊鏂囦歡澶?/div>
               
     濡傛灉fileNamePattern鏂囦歡鍚嶆槸浠?gz鎴栬?zip緇撳熬鐨勶紝閭d箞TimeBasedRollingPolicy浼氳嚜鍔ㄥ帇緙╋細
          /wombat/foo.%d.gz
     鏃ュ織褰掓。鏄?#8220;璁板綍鏃ュ織鐨勪簨浠?#8221;瑙﹀彂鐨勶紝鎵浠ユ湁涓瀹氬歡榪熴備緥濡傜浜屽ぉ鐨勭涓鏉℃棩蹇楁槸涓存櫒01:00鎵嶈繃鏉ワ紝閭d箞榪欎釜鏃跺欐墠浼氬綊妗e墠涓澶╃殑鏃ュ織銆?/div>
閰嶇疆鏍蜂緥錛?/div>
  <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>logFile.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <fileNamePattern>logFile.%d{yyyy-MM-dd}.log</fileNamePattern>
      <maxHistory>30</maxHistory>
    </rollingPolicy>
    <encoder>
      <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
    </encoder>
  </appender>
----------------------------------------------------------
FixedWindowRollingPolicy
     鍙厤緗睘鎬э細
          minIndex:
          maxIndex:
          fileNamePattern:     
               蹇呴』鍖呭惈“%i”鍗犱綅絎︼紝鐢ㄦ潵琛ㄧず灝嗗綋鍓嶇儲寮曞兼彃鍏ヤ粈涔堜綅緗?/div>
               渚嬪“MyLogFile%i.log”閰嶅悎“鏈灝?錛屾渶澶?”錛岃〃紺烘枃浠跺悕涓猴細MyLogFile1.log, MyLogFile2.log, MyLogFile3.log
               鍚屾牱鍔犱笂zip鎴杇z鍚庣紑鍙互鍚敤鍘嬬緝
     鍥犱負姣忔闇瑕佸緢澶氶噸鍛藉悕鎿嶄綔錛堥噸鍛藉悕嬈℃暟絳変簬window size錛夛紝鎵浠ュ鏋滆緗畇ize瓚呰繃20錛屼細琚己鍒舵寚瀹氫負20.
     閰嶇疆鏍蜂緥錛?/div>
  <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>test.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
      <fileNamePattern>tests.%i.log.zip</fileNamePattern>
      <minIndex>1</minIndex>
      <maxIndex>3</maxIndex>
    </rollingPolicy>
    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
      <maxFileSize>5MB</maxFileSize>
    </triggeringPolicy>
    <encoder>
      <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
    </encoder>
  </appender>
----------------------------------------------------------
SizeAndTimeBasedFNATP錛團ile Naming And Triggering Policy錛?#8212;—鏄疶imeBasedRollingPolicy鐨勪竴涓瓙緇勪歡
     閰嶇疆鏍蜂緥錛?/div>
  <appender name="ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>mylog.txt</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <!-- rollover daily -->
      <fileNamePattern>mylog-%d{yyyy-MM-dd}.%i.txt</fileNamePattern>
      <timeBasedFileNamingAndTriggeringPolicy
            class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
        <!-- or whenever the file size reaches 100MB -->
        <maxFileSize>100MB</maxFileSize>
      </timeBasedFileNamingAndTriggeringPolicy>
    </rollingPolicy>
    <encoder>
      <pattern>%msg%n</pattern>
    </encoder>
  </appender>
     ——姣忓ぉ婊氬姩涓涓枃浠訛紝濡傛灉鏂囦歡浣撶Н杈懼埌100M錛屽垯涔熸媶鍒嗐?/div>
     ——涔熸敮鎸佽嚜鍔ㄥ垹闄よ佹枃浠訛紝鍙互閫氳繃maxHistory鎸囧畾淇濆瓨鐨勬渶澶氭枃浠舵暟錛堟瘡澶╂渶澶氳繖涔堝錛岃繕鏄竴鍏辨渶澶氳繖涔堝錛燂級
----------------------------------------------------------
SizeBasedTriggeringPolicy——涓鑸厤鍚團ixedWindowRollingPolicy浣跨敤
     鎸囧畾鏂囦歡瓚呰繃“maxFileSize”鎸囧畾澶у皬鏃訛紝涓婂眰RollingFileAppender瑙﹀彂婊氬姩鎿嶄綔銆?/div>
     榛樿“10MB”錛屽彲浠ユ寚瀹氬悇縐嶅悗緙錛欿B,MB,GB
----------------------------------------------------------
----------------------------------------------------------
SocketAppender and SSLSocketAppender
浠ュ強鍚庨潰鍏充簬緗戠粶錛屾暟鎹簱錛岃繙紼嬫棩蹇楁湇鍔″櫒錛孞NDI絳?#8230;…鐪佺暐……
----------------------------------------------------------
SiftingAppender
     鍙互鏍規嵁鎸囧畾鐨勫彉閲忓垎鍓叉枃浠躲備緥濡傛牴鎹敤鎴稩D錛屽垯姣忎釜鐢ㄦ埛涓涓棩蹇楁枃浠躲?/div>
     
     鍙厤緗弬鏁幫細
          timeout錛氬鏋滀竴涓叧鑱旂殑appender濡傛灉瓚呰繃榛樿30鍒嗛挓娌℃湁琚闂紝鍒欒SiftingAppender鍗歌澆鎺夈?/div>
          maxAppenderCount錛氬彲浠ユ渶澶ц拷韙殑鍏寵仈appender鏁伴噺錛岄粯璁nt鏈澶у箋?/div>
     榪欎釜Appener浼氭妸鏃ュ織璁板綍鍔ㄤ綔浠g悊緇欏叧鑱旂殑appender銆?/div>
     閫夋嫨鏉′歡鐢盌iscriminator鎸囧畾錛岄粯璁や負MDCBasedDiscriminator銆?/div>
     紺轟緥錛屽亣璁懼簲鐢ㄧ▼搴忚繖鏍瘋緗簡MDC淇℃伅錛?/div>
logger.debug("Application started");
MDC.put("userid", "Alice");
logger.debug("Alice says hello"); 
     鐒跺悗榪欐牱閰嶇疆錛?/div>
  <appender name="SIFT" class="ch.qos.logback.classic.sift.SiftingAppender">
    <!-- in the absence of the class attribute, it is assumed that the
         desired discriminator type is
         ch.qos.logback.classic.sift.MDCBasedDiscriminator -->
    <discriminator>
      <key>userid</key>
      <defaultValue>unknown</defaultValue>
    </discriminator>
    <sift>
      <appender name="FILE-${userid}" class="ch.qos.logback.core.FileAppender">
        <file>${userid}.log</file>
        <append>false</append>
        <layout class="ch.qos.logback.classic.PatternLayout">
          <pattern>%d [%thread] %level %mdc %logger{35} - %msg%n</pattern>
        </layout>
      </appender>
    </sift>
  </appender>          
     鍥犱負紜畾timeout鍜宮axAppenderCount姣旇緝鍥伴毦錛屾墍浠ュ鏋滅▼搴忓彲浠ョ煡閬?#8220;鎵ц鍒版煇涓湴鏂瑰緢鍙兘搴旇鍏抽棴瀵瑰簲鐨刟ppender”錛岄偅涔堝彲浠ユ槑紜寚瀹氫竴涓狥INALIZE_SESSION鐨刴arker銆傝繖鏍穝iftingAppender鍏寵仈鐨勫搴攁ppender錛屼細鍦ㄦ帴鍒拌繖涓猰arker鐨勫嚑縐掗挓鍚庡叧闂備緥濡傦細
import static ch.qos.logback.classic.ClassicConstants.FINALIZE_SESSION_MARKER;
  void job(String jobId) {
    MDC.put("jobId", jobId);
    logger.info("Starting job.");
    
    // will cause the nested appender reach end-of-life. It will
    // linger for a few seconds.
    logger.info(FINALIZE_SESSION_MARKER, "About to end the job");
    try {
      .. perform clean up
    } catch(Exception e);  
      // This log statement will be handled by the lingering appender. 
      // No new appender will be created.
      logger.error("unexpected error while cleaning up", e);
    }
  }
----------------------------------------------------------
SMTPAppender
     灝嗘棩蹇椾簨浠剁紦瀛樻寚瀹氱殑鏁伴噺錛岃鐗瑰畾浜嬩歡瑙﹀彂鍚庯紝寮傛鍙戦侀偖浠躲?/div>
          smtpHost     
          smtpPort     榛樿25
          to          鍙戦佺洰鏍囷紝澶氫釜鑱旂郴浜哄彲浠ョ敤閫楀彿闅斿紑錛屼篃鍙互鐢ㄥ涓?lt;to>鍏冪礌
          from      鍙戦佽呴偖綆憋紝濡傛灉鎯沖寘鍚悕瀛楋紝鍙互鐢ㄧ壒瀹氭牸寮?#8220;Adam Smith &lt;smith@moral.org&gt;”
          subject     閭歡鏍囬錛屽彲浠ヤ嬌鐢≒atternLayout鐨勮漿涔夊瓧絎︼紝浼氱敤“瑙﹀彂璇ラ偖浠剁殑鏃ュ織浜嬩歡”鐨勪俊鎭浛鎹㈣漿涔夊瓧絎?/div>
          discriminator     榛樿鍙湁涓涓紦瀛樸傞氳繃鎸囧畾璇ュ睘鎬э紝鍙互鏈夊涓紦瀛橈紝榪欐牱鍙互鏍規嵁浜嬩歡淇℃伅鍙戠粰涓嶅悓鐨勪漢鎴栬卛p
          evaluator     澹版槑涓涓?lt;EventEvaluator/>鍏冪礌錛岄氳繃class灞炴ф寚瀹氱被鍨嬨傞粯璁や負OnErrorEvaluator錛屼篃鍙互鑷繁鎸囧畾OnMarkerEvaluator,JaninoEventEvaluator,GEventEvaluator
          cyclicBufferTracker     鐜艦緙撳瓨璺熻釜鍣紝鍩轟簬discriminator鐨勮繑鍥炲煎伐浣溿傞粯璁や繚瀛樼紦瀛樺ぇ灝忎負256
          username     
          password     
          STARTTLS     濡傛灉寮鍚紝浼氬彂璧稴TARTTLS鍛戒護錛屽鑷磋繛鎺ヨ漿鎹負SSL銆傝繛鎺ラ粯璁ゆ槸涓嶄嬌鐢ㄥ姞瀵嗙殑銆傞粯璁や負false
          SSL          濡傛灉寮鍚紝閭d箞浣跨敤SSL榪炴帴銆傞粯璁alse銆?/div>
          charsetEncoding     榛樿UTF-8
          localhost     濡傛灉SMTP鍙戦佹柟鐨刪ostname娌¢厤緗ソ錛岄偖浠舵湇鍔″櫒鍙兘鎷掔粷璇鋒眰錛岃繖涓椂鍊欏彲浠ヨ緗繖涓間負瀹㈡埛绔叏鍚嶃?/div>
          asynchronousSending     寮傛鍙戦侊紝榛樿true銆傜壒瀹氭儏鍐典笅闇瑕佽緗負false錛屼緥濡傚簲鐢ㄧ▼搴忓彂閫佸畬閭歡灝變細绔嬪嵆鍏抽棴銆?/div>
          includeCallerData     鍖呭惈璋冪敤鑰呬俊鎭紝榛樿涓篺alse銆?/div>
          sessionViaJNDI     logback渚濊禆javax.mail.Session鏉ュ彂閫侀偖浠躲傝灞炴ч粯璁や負false錛孲MTPAppender浼氭牴鎹厤緗瀯寤烘柊鐨凷ession銆傚鏋滆涓簍rue錛屼細鍘粀eb瀹瑰櫒瀵繪壘Session瀵硅薄錛屾鏃跺簲鐢ㄧ▼搴忎笉搴旇鍐嶄緷璧杕ail.jar絳?/div>
          jndiLocation     鏌ユ壘JNDI鐨勮礬寰勶紝渚嬪"java:comp/env/mail/Session"
     鏈澶氫繚瀛?56鏉℃棩蹇椾簨浠訛紝鍚﹀垯鍐呭瓨娑堣楀お澶э紙涓嶅緩璁嚜宸辨寚瀹氬叾瀹冨鹼級銆?/div>
     鍙戦偖浠朵緷璧朖avaMail API (mail.jar)鍜孞avaBeans Activation Framework (activation.jar) ——maven閲屽紩鍏ュ墠鑰呬細鑷姩渚濊禆鍚庤呫?/div>
     鍙戦佽呭拰鎺ユ敹鑰呴兘鍙互鏄姩鎬佸睘鎬э細
<appender name="EMAIL" class="ch.qos.logback.classic.net.SMTPAppender">
  <smtpHost>${smtpHost}</smtpHost>
  <to>${to}</to>
  <from>${from}</from>
  <layout class="ch.qos.logback.classic.html.HTMLLayout"/>
</appender>
     娉ㄦ剰涓婇潰鐨刲ayout涔熷彲浠ョ敤patternLayout錛?/div>
    <layout class="ch.qos.logback.classic.PatternLayout">
      <pattern>%date %-5level %logger{35} - %message%n</pattern>
    </layout>
瑙﹀彂浜嬩歡錛?/div>
     榛樿鏄疧nErrorEvaluator錛屼絾鍙互鑷繁瀹氬埗銆係MTPAppender浠呯淮鎶や竴涓狤valuator錛岃繖涓狤valuator鍙互鑷繁緇存姢鐘舵侊紝渚嬪鍙互瀹炵幇涓涓狢ounterBasedEvaluator銆?/div>
     
鍩轟簬鏍囪Marker鐨勪簨浠惰Е鍙戯細
Marker notifyAdmin = MarkerFactory.getMarker("NOTIFY_ADMIN");
logger.error(notifyAdmin,
  "This is a serious an error requiring the admin's attention",
   new Exception("Just testing"));
  <appender name="EMAIL" class="ch.qos.logback.classic.net.SMTPAppender">
    <evaluator class="ch.qos.logback.classic.boolex.OnMarkerEvaluator">
      <marker>NOTIFY_ADMIN</marker>
      <!-- you specify add as many markers as you want -->
      <marker>TRANSACTION_FAILURE</marker>
    </evaluator>
  </appender>
榪樺彲浠ヤ嬌鐢ㄦ洿鍔犻氱敤鐨凧aninoEventEvaluator鎴栬匞EventEvaluator錛屼粬浠彁渚涙洿澶嶆潅鏇村己澶х殑鐢勫埆鍔熻兘錛堜篃鍖呭惈浜哋nMarkerEvaluator鐨勫姛鑳斤級銆?/div>
韜喚楠岃瘉/STARTTLS/SSL
     SMTPAppender鏀寔鐢ㄦ埛鍚嶅拰瀵嗙爜鐨勫姞瀵嗛獙璇併?/div>
     STARTTLS鏂瑰紡鏄厛浣跨敤闈炲姞瀵嗘柟寮忓緩绔嬭繛鎺ワ紝鐒跺悗鍒囨崲鍒癝SL錛堝父鐢ㄤ簬server-server浜や簰錛夈?/div>
     SSL鏂瑰紡鏄洿鎺ュ緩绔婼SL榪炴帴錛堜竴鑸敤浜巆lient-sever浜や簰錛夈?/div>
Appender configuration for Gmail (SSL)
<appender name="EMAIL" class="ch.qos.logback.classic.net.SMTPAppender">
    <smtpHost>smtp.gmail.com</smtpHost>
    <smtpPort>465</smtpPort>
    <SSL>true</SSL>
    <username>YOUR_USERNAME@gmail.com</username>
    <password>YOUR_GMAIL_PASSWORD</password>   
  </appender>
SMTPAppender for Gmail (STARTTLS)
  <appender name="EMAIL" class="ch.qos.logback.classic.net.SMTPAppender">
    <smtpHost>smtp.gmail.com</smtpHost>
    <smtpPort>587</smtpPort>
    <STARTTLS>true</STARTTLS>
    <username>YOUR_USERNAME@gmail.com</username>
    <password>YOUR_GMAIL_xPASSWORD</password>    
  </appender>
Discriminator
     鐢∕DCBasedDiscriminator鍋氱ず渚嬶紝鏍規嵁MDC鐨勫鹼紝緇存姢澶氫釜緙撳瓨
  <appender name="EMAIL" class="ch.qos.logback.classic.net.SMTPAppender">
    <discriminator class="ch.qos.logback.classic.sift.MDCBasedDiscriminator">
      <key>req.remoteHost</key>
      <defaultValue>default</defaultValue>
    </discriminator>
    <subject>${HOSTNAME} -- %X{req.remoteHost} %msg"</subject>
    <layout class="ch.qos.logback.classic.html.HTMLLayout">
      <pattern>%date%level%thread%X{req.remoteHost}%X{req.requestURL}%logger%msg</pattern>
    </layout>
  </appender>
     涓婇潰鐨勪緥瀛愬厛鍒╃敤浜哅DCInsertingServletFilter鎶婅姹傛柟鐨刪ostname鎴杋p璁劇疆鍒癕DC涓?/div>
     姣忎竴涓猺emoteHost閮芥湁涓涓嚜宸辯殑buffer錛屼竴鏃︽煇涓猺emoteHost瑙﹀彂浜嗗彂閫侀偖浠剁殑璇鋒眰錛岄偅涔堣buffer閲岀殑256鏉′俊鎭細琚彂閫佸嚭鍘匯?/div>
Buffer綆$悊錛?/div>
     涓婇潰鐨勪緥瀛愶紝姣忎竴涓繙紼嬪湴鍧閮芥湁鑷繁鐨刡uffer錛屼細鏋佸ぇ鐨勬秷鑰楀唴瀛樸?/div>
     榛樿鎯呭喌涓嬶紝logback鍐呴儴鏈澶氬厑璁?4涓猙uffer鍚屾椂瀛樺湪錛孡RU綆楁硶鎹㈠嚭銆傝秴榪?0鍒嗛挓鏈嬌鐢ㄧ殑buffer涔熶細琚崲鍑恒傝鍊煎彲浠ラ氳繃maxNumberOfBuffers鏉ヨ緗?br />
          榪欓噷鏈夐棶棰橈紝閫氳繃鍚勭鎵嬫閮芥棤娉曡緗鍊鹼紝璨屼技鏄釜bug錛屾垜鍦ㄥ敖鎴戞墍鑳芥煡閬嶆墍鏈夎祫鏂欏悗錛屽湪stackoverflowh鍜屽畼鏂筳ira涓婃彁浜嗚繖涓棶棰橈細
     鍦ㄩ珮寮哄害緋葷粺涓紝涓婇潰鐨?涓繚鎶ゆ満鍒朵笉澶燂紝闇瑕佸姞鍏ユ墜宸ョ鐞嗭細閫氳繃鏄庣‘鎸囧畾“FINALIZE_SESSION”榪欎釜Marker錛屾潵鍛婅瘔logback鍘婚噴鏀懼搴旂殑buffer錛岃繖鏍峰氨鍙互瀹夊叏鐨勫皢maxNumberOfBuffers璁劇疆涓?12涔冭嚦1024銆傦紙鍏蜂綋璁劇疆鍔炴硶鍙傜収SiftingAppender閲屾弿榪扮殑錛?/div>
榪欓噷鏄畼鏂圭殑涓涓猄MTPAppender鐨勪緥瀛愶細
娉ㄦ剰Marker鍙互鍙犲姞錛屾墍浠ュ鏋滄湁蹇呰錛屽彲浠ユ妸“鍙戦侀偖浠剁殑Marker”鍜?#8220;緇堢粨Session錛堜互渚挎竻鐞哹uffer錛夌殑Marker”鍏寵仈鍦ㄤ竴璧楓?/div>
     Marker SMTP_TRIGGER = MarkerFactory.getMarker("SMTP_TRIGGER");
     SMTP_TRIGGER.add(FINALIZE_SESSION_MARKER);
----------------------------------------------------------
AsyncAppender
     綾諱技浜庡崟鐙殑涓涓簨浠跺垎鍙戝櫒錛屾墍浠ュ繀欏誨紩鐢ㄥ彟涓涓猘ppender銆?/div>
     鐢ㄤ竴涓狟lockingQueue緙撳啿浜嬩歡錛岀劧鍚庡垱寤轟竴涓嚎紼嬶紝浠庨槦鍒楅噷鑾峰彇浜嬩歡騫跺垎鍙戠粰寮曠敤鐨刟ppender銆?/div>
     榛樿鎯呭喌涓嬶紝濡傛灉闃熷垪杈懼埌80%鐨勫閲忥紝鍒欎涪寮僒RACE,DEBUG,INFO綰у埆鐨勬棩蹇椼?/div>
     搴旂敤紼嬪簭鍋滄鐨勬椂鍊欙紝浼氶氱煡LoggerContext鍋滄錛屽湪鍋滄鍚勪釜Appender鏃訛紝AsyncAppender浼氬仠姝㈡帴鏀舵棩蹇楋紝騫跺皢淇℃伅flush鍒扮鐩樸?/div>
     閰嶇疆鍙傛暟錛?/div>
          queueSize錛氶粯璁?56
          discardingThreshold錛氶粯璁ら槦鍒?0%鍙敤鐨勬椂鍊欏紑濮嬮夋嫨鎬ф姏寮冧俊鎭紝璁句負0琛ㄧず涓嶆姏寮?/div>
          includeCallerData錛氭槸鍚﹀寘鎷皟鐢ㄨ呬俊鎭紙閲嶅紑閿錛夛紝榛樿鍙鍒剁嚎紼嬪悕鍜孧DC淇℃伅錛堝洜涓哄垏鎹簡綰跨▼錛屽叾浣欎俊鎭細涓㈠け錛?/div>
     闃熷垪鍏ㄦ弧鐨勬椂鍊欙紝鍐欐棩蹇楀姩浣滀細琚玝lock錛岀洿鍒伴槦鍒楁湁鍙敤絀洪棿銆?/div>
----------------------------------------------------------
鑷畾涔堿ppender
     鐣?/div>
----------------------------------------------------------          
----------------------------------------------------------
Logback Access
     澶ч儴鍒咥ppender錛屽湪logback-classic涓巐ogback-access涓嬌鐢ㄦ柟寮忕被浼箋?/div>




]]>logback_doc_manual_03_configurationhttp://www.tkk7.com/watchzerg/archive/2014/07/13/415748.html鐜嬫槦娓?/dc:creator>鐜嬫槦娓?/author>Sun, 13 Jul 2014 10:56:00 GMThttp://www.tkk7.com/watchzerg/archive/2014/07/13/415748.htmlhttp://www.tkk7.com/watchzerg/comments/415748.htmlhttp://www.tkk7.com/watchzerg/archive/2014/07/13/415748.html#Feedback0http://www.tkk7.com/watchzerg/comments/commentRss/415748.htmlhttp://www.tkk7.com/watchzerg/services/trackbacks/415748.html
-------------------------------------------------------
涓巗pring鐨勯厤緗細
璨屼技瀹樼綉涓婃病鏈変粙緇嶏紝浣嗘槸浣滆呭湪github涓婂緩绔嬩簡涓涓墿灞曢」鐩敤浜巐ogback涓巗pring緇撳悎銆?/div>
鐩墠鏈鏂扮増鏈槸0.1.2錛屽緢澶歮aven鍏紑搴撻噷宸茬粡鏈変簡銆?/div>
maven閰嶇疆錛?/div>
<dependency>  
     <groupId>org.logback-extensions</groupId>  
     <artifactId>logback-ext-spring</artifactId>  
     <version>0.1.2</version>  
</dependency>
web.xml閰嶇疆鏃ュ織妗嗘灦鍚姩鐩戝惉鍣細
<!-- logback閰嶇疆鏂囦歡 -->
<context-param>
     <param-name>logbackConfigLocation</param-name>
     <param-value>/WEB-INF/classes/logback.xml</param-value>
</context-param>
<!-- logback鍔犺澆鐩戝惉鍣?-->
<listener>
     <listener-class>
          ch.qos.logback.ext.spring.web.LogbackConfigListener
     </listener-class>
</listener>
-------------------------------------------------------
logback涓殑閰嶇疆錛?/div>
鍙互鐢╦ava紼嬪簭閰嶇疆錛屼篃鍙互鐢▁ml鎴栬単roovy鑴氭湰閰嶇疆銆?/div>
浣跨敤 http://logback.qos.ch/translator/ 鍙互鎶妉og4j鐨勯厤緗嚜鍔ㄨ漿鎹㈣繃鏉ャ?/div>
logback鍐呴儴鏌ユ壘閰嶇疆鐨勮繃紼嬶細
     1錛屽湪classpath鏌ユ壘“logback.groovy”
     2錛屽湪classpath鏌ユ壘“logback-test.xml”
     3錛屽湪classpath鏌ユ壘“logback.xml”
     4錛屼嬌鐢ㄨ嚜韜殑BasicConfigurator鍋氬熀鏈厤緗紝鎵鏈夋棩蹇楄杈撳嚭鍒版帶鍒跺彴銆?/div>
     —— 涓鑸妸“logback-test.xml”鏀懼埌maven鐨勬祴璇曡礬寰勶紝鎶?#8220;logback.xml”鏀懼埌maven鐨勬寮忚礬寰勶紝鍓嶈呬紭鍏堢駭鏇撮珮銆?/div>
logback鐨勭姸鎬侊紝鍔犺澆閰嶇疆鏂囦歡鐨勮繃紼嬶細
     浠g爜鎵撳嵃錛?/div>
          LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
          StatusPrinter.print(lc);
     閰嶇疆鏂囦歡褰㈠紡鎵撳嵃錛?/div>
          <configuration debug="true">
            ... 
          </configuration>
     涔熷彲浠ラ氳繃璁劇疆StatusListener鏉ョ洃鍚琹ogback鐨勫惎鍔ㄥ拰鎵撳嵃鐘舵?#8212;—鍦ㄧ敓浜х幆澧冩尯鏈夌敤錛屽洜涓洪厤緗枃浠惰礬寰勬尯娣便?/div>
閫氳繃鍦ㄧ郴緇熷彉閲忛噷鍔犲叆"logback.configurationFile"鎸囧畾logback閰嶇疆鏂囦歡璺緞錛?/div>
     java -Dlogback.configurationFile=/path/to/config.xml chapters.configuration.MyApp1
璁劇疆鑷姩鎵弿鍜岄亣鍒板彉鏇存椂閲嶆柊鍔犺澆閰嶇疆鏂囦歡錛堜笉鎸囧畾鍛ㄦ湡鐨勮瘽榛樿姣?鍒嗛挓錛夛細
     <configuration scan="true" scanPeriod="30 seconds"> 
       ... 
     </configuration> 
     姣忓綋N涓紙logback浼氳嚜鍔ㄨ皟鑺傦級鏃ュ織璇鋒眰錛宭ogback浼氭鏌ヤ竴涓嬫壂鎻忓懆鏈熸槸鍚﹀凡緇忓埌杈撅紝濡傚埌杈懼啀媯鏌ラ厤緗枃浠躲?/div>
閫氳繃web璁塊棶鐘舵佷俊鎭細
鍦╳eb.xml閰嶇疆錛?/div>
     <servlet>
         <servlet-name>ViewStatusMessages</servlet-name>
         <servlet-class>ch.qos.logback.classic.ViewStatusMessagesServlet</servlet-class>
      </servlet>
      <servlet-mapping>
         <servlet-name>ViewStatusMessages</servlet-name>
         <url-pattern>/lbClassicStatus</url-pattern>
      </servlet-mapping>
鐒跺悗璁塊棶錛歨ttp://host/yourWebapp/lbClassicStatus
娉ㄥ唽鎺у埗鍙扮姸鎬佺洃鍚櫒錛?/div>
     java浠g爜鏂瑰紡錛?/div>
          LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory(); 
          StatusManager statusManager = lc.getStatusManager();
          OnConsoleStatusListener onConsoleListener = new OnConsoleStatusListener();
          statusManager.add(onConsoleListener);
     鐢ㄩ厤緗枃浠舵柟寮忥細
          <configuration>
            <statusListener class="ch.qos.logback.core.status.OnConsoleStatusListener" />  
            ...
          </configuration>
     緋葷粺鍙橀噺鏂瑰紡錛?/div>
          java -Dlogback.statusListenerClass=ch.qos.logback.core.status.OnConsoleStatusListener
鍋滄logback錛?/div>
     java浠g爜鏂瑰紡錛?/div>
          LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
          loggerContext.stop();
     web搴旂敤錛?/div>
          ServletContextListener.contextDestroyed()浼氳嚜鍔ㄨ皟鐢ㄤ笂闈㈢殑stop鏂規硶銆?/div>
-------------------------------------------------------
閰嶇疆鏂囦歡鏍煎紡錛?/div>
     鏈澶栧眰鏄?lt;configuration>鍏冪礌錛岄噷闈㈡湁<appender><logger><root>鍏冪礌
<logger>鍏冪礌錛?/div>
     level灞炴у彲浠ヨ繖浜涘鹼細TRACE, DEBUG, INFO, WARN, ERROR, ALL, OFF錛屼篃鍙互鏄庣‘鎸囧畾緇ф壙錛欼NHERITED鎴栬匩ULL
     鍖呭惈鑻ュ共<appender-ref>鍏冪礌錛屾寚瀹歛ppender鐨勫悕瀛椼?/div>
浠嶥EBUG鏀逛負INFO綰у埆錛?/div>
<configuration>
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <!-- encoders are assigned the type
         ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
    <encoder>
      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
  </appender>
  <logger name="chapters.configuration" level="INFO"/>
  <!-- Strictly speaking, the level attribute is not necessary since -->
  <!-- the level of the root level is set to DEBUG by default.       -->
  <root level="DEBUG">          
    <appender-ref ref="STDOUT" />
  </root>  
</configuration>
-------------------------------------------------------
閰嶇疆Appender錛?/div>
     name鍜宑lass灞炴?/div>
     鍐呭祵0涓垨1涓猯ayout鍏冪礌錛?涓垨澶氫釜encoder鍏冪礌錛?涓垨澶氫釜filter鍏冪礌銆傝繕鍙互鍐呭祵浠繪剰鏁伴噺鐨刟ppdenter綾葷殑灞炴э紙渚嬪鑷畾涔夌殑appender綾伙級銆?/div>
     layout鍏冪礌搴旇鍐呭祵鍏蜂綋鐨刲ayout綾伙紝浣嗘槸榛樿灝辨槸PatternLayoutEncoder銆?/div>
Appender鐨勭瘡鍔犳э細
     logger浼氳褰曞湪鎵鏈夌粦瀹氬湪瀹冭嚜韜殑appender錛屽悓鏃朵篃浼氳褰曞湪璇ogger紲栧厛鐨刟ppender涓婏紝鎵浠ユ湁鍙兘閲嶅璁板綍錛?/div>
閰嶇疆Logger Context錛堝彲浠ョ敤鍦?#8220;澶氫釜欏圭洰鍐欏叆鍚屼竴涓棩蹇楁枃浠?#8221;榪欑鎯呭喌錛夛細
<configuration>
  <contextName>myAppName</contextName>
  ...
</configuration>
-------------------------------------------------------
鍙橀噺鏇挎崲錛?/div>
<configuration>
  <property name="USER_HOME" value="/home/sebastien" />
  <appender name="FILE" class="ch.qos.logback.core.FileAppender">
    <file>${USER_HOME}/myApp.log</file>
    ...
  </appender>
   ...
</configuration>
——涓婇潰鐨勫彉閲忓畾涔夊湪緋葷粺灞炴ч噷涔熷彲浠ワ細java -DUSER_HOME="/home/sebastien" MyApp2
鍙橀噺涔熷彲浠ュ畾涔夊湪鏂囦歡閲岋細
<configuration>
  <property file="src/main/java/chapters/configuration/variables1.properties" />
  <appender name="FILE" class="ch.qos.logback.core.FileAppender">
     <file>${USER_HOME}/myApp.log</file>
     ...
   </appender>
   ...
</configuration>
——瀵瑰簲璺緞鐨勬枃浠墮噷搴旇鍔犲叆“USER_HOME=/home/sebastien”
錛堣繖璺緞鎸鴻寮傚晩錛屾槸maven鐨勭粨鏋勶紝閭f墦鍖呭悗宀備笉鏄笉鑳界敤浜嗭紵錛?/div>
鍍忚繖鏍峰紩鐢╟lasspath鐨勮繕闈犺氨浜涳細
<property resource="resource1.properties" />
鍙橀噺鍙互鎸囧畾浣滅敤鍩燂細local錛宑ontext錛宻ystem
鍙橀噺鍙互鐩鎬簰寮曠敤錛?/div>
     USER_HOME=/home/sebastien
     fileName=myApp.log
     destination=${USER_HOME}/${fileName}
鍛藉悕寮曠敤錛氬鏋?userid"浼氳鏇挎崲涓?alice"錛岄偅涔?${${userid}.password}"浼氳鏇挎崲涓?alice.password"瀵瑰簲鐨勫箋?/div>
鍙橀噺鍙互鎸囧畾榛樿鍊鹼細${aName:-golden}  ——榪欏氨鎸囧畾浜嗛粯璁ゅ糶olden
鍙橀噺鐨勯粯璁ゅ間篃鍙互寮曠敤鍙橀噺錛?nbsp;"${id:-${userid}}
棰勭疆鍙橀噺錛欻OSTNAME,CONTEXT_NAME
鍙互閫氳繃timestamp鍏冪礌瀹氫箟涓涓綋鍓嶇殑鏃ユ湡鍜屾椂闂寸殑鍔ㄦ佸厓绱犮?/div>
鍙互鑷繁緇ф壙PropertyDefiner瀹炵幇鍔ㄦ佺敓鎴愬睘鎬э紝鐜板湪鍐呯疆浜?涓姩鎬佸睘鎬х敓鎴愬櫒錛?/div>
     FileExistsPropertyDefiner     濡傛灉鎸囧畾璺緞鏂囦歡瀛樺湪錛屽垯灝嗘寚瀹氬睘鎬ц涓?#8220;true”錛屽弽涔嬩害鐒?/div>
     ResourceExistsPropertyDefiner     濡傛灉鎸囧畾璧勬簮瀛樺湪錛屽垯灝嗘寚瀹氬睘鎬ц涓?#8220;true”錛屽弽涔嬩害鐒?/div>
鏉′歡璇彞錛?/div>
   <!-- if-then form -->
   <if condition="some conditional expression">
    <then>
      ...
    </then>
  </if>
  <!-- if-then-else form -->
  <if condition="some conditional expression">
    <then>
      ...
    </then>
    <else>
      ...
    </else>    
  </if>
鍒ゆ柇鏉′歡鍙敮鎸乧ontext鍙橀噺鍜宻ystem鍙橀噺錛岀敤property()鎴栬卲()鏉ュ紩鐢?#8212;—濡傛灉娌℃湁璁懼畾瀵瑰簲鍙橀噺錛岃繖涓や釜鏂規硶浼氳繑鍥炵┖涓詫紙鑰屼笉鏄痭ull錛?/div>
isDefine()鍜宨sNull()鍒嗗埆鍒ゆ柇鍙橀噺鏄惁璁劇疆鍜屽彉閲忔槸鍚︿負絀恒?/div>
     <if condition='property("HOSTNAME").contains("torino")'>
     ...
     </if>
鍙互浠嶫NDI璇誨彇鍙橀噺鍊鹼紙浣滅敤鍩熶負local錛夈備篃鍙互灝嗕粠JNDI璇誨彇鐨勫彉閲忓瓨鍏ュ彟涓涓笉鍚屼綔鐢ㄥ煙鐨勫彉閲忋?/div>
     <configuration>
       <insertFromJNDI env-entry-name="java:comp/env/appName" as="appName" />
       ...
     </configuration>
-------------------------------------------------------
鏂囦歡鍖呭惈錛堝彲浠ヤ嬌鐢ㄧ浉瀵硅礬寰勩傚綋鍓嶈礬寰勫凡緇忓湪褰撳墠欏圭洰涓畾涔夛紝鎵浠ユ病蹇呰涓庨厤緗枃浠惰礬寰勫叧鑱旓級錛?/div>
<configuration>
  <include file="src/main/java/chapters/configuration/includedConfig.xml"/>
  ...
</configuration>     
琚寘鍚殑鏂囦歡蹇呴』鐢?lt;include>鏍囩鍖呰9錛?/div>
<included>
  <appender name="includedConsole" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>"%d - %m%n"</pattern>
    </encoder>
  </appender>
</included>
榪樺彲浠ュ叧鑱旇祫婧愶紙渚嬪classpath涓嬬殑鏌愪釜鏂囦歡錛夛細
     <include resource="includedConfig.xml"/>
榪樺彲浠ュ叧鑱擴RL錛?/div>
     <include url="http://some.host.com/includedConfig.xml"/>
鍙互鎸囧畾姝ゆ鏂囦歡鍖呭惈涓?#8220;鍙夌殑”錛?/div>
     <include optional="true" ..../>
-------------------------------------------------------
LoggerContextListener
鍏朵腑涓涓疄鐜癓evelChangePropagator浼氱洃鍚棩蹇楃幆澧冪殑鍚堥傜殑鐢熷懡鍛ㄦ湡錛屽茍鎶婃棩蹇楃駭鍒殑鍙樺寲浼犳挱緇橨UL錛岃繖鏍稪UL鍏抽棴鐨勬棩蹇椾笉浼氬啀浼犻掔粰slf4j錛岀敤榪欑鏂瑰紡瀵規ц兘鍐插嚮杈冨皬錛岄傚悎jul-to-slf4j鐨勬ˉ鎺ュ寘銆?/div>


]]> 主站蜘蛛池模板: 亚洲AV一宅男色影视| 国产日韩AV免费无码一区二区 | 亚洲人配人种jizz| 亚洲精品无码永久在线观看你懂的| 免费无码黄网站在线观看| 久久不见久久见免费视频7| caoporm超免费公开视频| 青草久久精品亚洲综合专区| 91亚洲国产成人久久精品网址| 国产亚洲av片在线观看16女人| 亚洲成a人片在线观看日本麻豆| 成人免费无遮挡无码黄漫视频| 麻花传媒剧在线mv免费观看| 中文字幕无码日韩专区免费 | 亚洲人妻av伦理| 国产美女无遮挡免费视频| 日韩免费a级毛片无码a∨ | 亚洲国产精品国自产电影| 亚洲中文字幕第一页在线| 亚洲日韩在线观看| 亚洲AV无码专区日韩| 日本一区免费电影| 天堂在线免费观看中文版| 性生交片免费无码看人| 999国内精品永久免费观看| 69视频免费在线观看| 久久综合给合久久国产免费| 无码av免费网站| 亚洲视频免费在线观看| 三年片在线观看免费观看大全一 | 亚洲AV无码一区二三区| 亚洲AV永久无码精品一区二区国产 | 女人张开腿等男人桶免费视频 | 456亚洲人成在线播放网站| 亚洲国产精品人久久电影| 亚洲欧洲尹人香蕉综合| 亚洲色成人网一二三区| 久久亚洲私人国产精品vA | 成年黄网站色大免费全看| 免费v片在线观看视频网站| 67194熟妇在线永久免费观看|