posts - 40, comments - 58, trackbacks - 0, articles - 0
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          SLF4J + logBack

          Posted on 2010-11-17 14:33 Astro.Qi 閱讀(2539) 評論(0)  編輯  收藏 所屬分類: Java

          一. Log4j+commons-logging 
          ? JAR包 
          commons-logging-1.1.jar 
          log4j-1.2.15.jar 
          ? 配置文件 
          commons-logging.properties 
          log4j.xml 
          ? commons-logging.jar包讀取commons-logging.properties中指定的log,自動加載日志配置 
          在commons-logging+log4j組合中commons-logging.properties指定的日志為: 
          org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger 
          ? log4j指定具體日志輸出配置 
          ? 如果未選用commons-logging,可以在啟動項目中,主動加載log4j的配置文件 
          二. slf4j+Logback 
          ? JAR包 
          slf4j-api-1.5.2.jar 
          logback-classic-0.9.9.jar 
          logback-core-0.9.9.jar 
          ? 配置文件 
          Logback.xml 
          ? logback的加載采用編碼加載 
          Java代碼 
          1. String logbackCfg = "/config/logback.xml";  
          2. URL logURL = new ClassPathResource(logbackCfg).getURL();  
          3. ILoggerFactory loggerFactory = LoggerFactory.getILoggerFactory();  
          4. LoggerContext loggerContext = (LoggerContext) loggerFactory;  
          5. loggerContext.shutdownAndReset();  
          6. JoranConfigurator configurator = new JoranConfigurator();  
          7. configurator.setContext(loggerContext);  
          8. configurator.doConfigure(logURL);  

          三. Slf4j+log4j 
          ? JAR包 
          slf4j-api-1.5.2.jar 
          slf4j-log4j12-1.5.2.jar 
          log4j-1.2.15.jar 
          ? 配置文件 
          Logback.xml 
          四. Slf4j+logback+log4j 
          注:這種情況下是項目中有log4j輸出的日志以及logback數據的日志.老項目改造,log4j和logback共存的情況下.(當選用spring+slf4j+logback的時候,spring的日志輸出是log4j的,這個時候采用這種配置.) 
          ? JARbao 
          log4j-over-slf4j-1.5.2.jar 
          logback-classic-0.9.9.jar 
          logback-core-0.9.9.jar 
          slf4j-api-1.5.2.jar 
          ? 配置文件 
          Logback.xml 
          ? 配置加載 
          Java代碼 
          1. String logbackCfg = "/config/logback.xml";  
          2. URL logURL = new ClassPathResource(logbackCfg).getURL();  
          3. ILoggerFactory loggerFactory = LoggerFactory.getILoggerFactory();  
          4. LoggerContext loggerContext = (LoggerContext) loggerFactory;  
          5. loggerContext.shutdownAndReset();  
          6. JoranConfigurator configurator = new JoranConfigurator();  
          7. configurator.setContext(loggerContext);  
          8. configurator.doConfigure(logURL);  

          五. Log4j配置文件示例 
          Java代碼 
          1. <?xml version="1.0" encoding="UTF-8"?>  
          2. <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">  
          3. <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">  
          4.   
          5.     <!-- 控制臺輸出-->  
          6.     <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">  
          7.         <param name="Target" value="System.out" />  
          8.         <param name="Threshold" value="INFO" />  
          9.         <layout class="org.apache.log4j.PatternLayout">  
          10.             <param name="ConversionPattern"  
          11.                 value="%d{yyyy-MM-dd HH:mm:ss sss}[%-p][%-c][line:%-L] \r\n  %m%n" />  
          12.         </layout>  
          13.   
          14. <!— 以下是過濾一些不需要輸出的log信息 -->  
          15.         <filter class="org.apache.log4j.varia.StringMatchFilter">  
          16.             <param name="StringToMatch" value="new a seq no spend" />  
          17.             <param name="AcceptOnMatch" value="false" />  
          18.         </filter>  
          19.         <filter class="org.apache.log4j.varia.StringMatchFilter">  
          20.             <param name="StringToMatch" value="new hi[type=" />  
          21.             <param name="AcceptOnMatch" value="false" />  
          22.         </filter>  
          23.         <filter class="org.apache.log4j.varia.StringMatchFilter">  
          24.             <param name="StringToMatch" value="FileTransfer.execCommand()" />  
          25.             <param name="AcceptOnMatch" value="false" />  
          26.         </filter>  
          27.     </appender>  
          28.   
          29.     <!--文件輸出 按照文件大小滾動文件-->  
          30.     <appender name="xxxx_file" class="org.apache.log4j.RollingFileAppender">  
          31.         <param name="Append" value="true" />  
          32.         <param name="Threshold" value="INFO" />  
          33.         <param name="File" value="xxxx.log" />  
          34.         <param name="MaxFileSize" value="100MB" />  
          35.         <param name="MaxBackupIndex" value="15" />  
          36.         <layout class="org.apache.log4j.PatternLayout">  
          37.             <param name="ConversionPattern"  
          38.                 value="%d{yyyy-MM-dd HH:mm:ss sss}[%-p][%-c][line:%-L] \r\n  %m%n" />  
          39.         </layout>  
          40.         <filter class="org.apache.log4j.varia.StringMatchFilter">  
          41.             <param name="StringToMatch" value="new a seq no spend" />  
          42.             <param name="AcceptOnMatch" value="false" />  
          43.         </filter>  
          44.         <filter class="org.apache.log4j.varia.StringMatchFilter">  
          45.             <param name="StringToMatch" value="new hi[type=" />  
          46.             <param name="AcceptOnMatch" value="false" />  
          47.         </filter>  
          48.         <filter class="org.apache.log4j.varia.StringMatchFilter">  
          49.             <param name="StringToMatch" value="FileTransfer.execCommand()" />  
          50.             <param name="AcceptOnMatch" value="false" />  
          51.         </filter>  
          52.     </appender>  
          53.       
          54.     <!-- 錯誤輸出 過濾出錯誤日志信息-->  
          55.     <appender name="xxxx_error" class="org.apache.log4j.RollingFileAppender">  
          56.         <param name="Append" value="true" />  
          57.         <param name="Threshold" value="ERROR" />  
          58.         <param name="File" value="xxxx-error.log" />  
          59.         <param name="MaxFileSize" value="100MB" />  
          60.         <param name="MaxBackupIndex" value="4" />  
          61.         <layout class="org.apache.log4j.PatternLayout">  
          62.             <param name="ConversionPattern"  
          63.                 value="%d{yyyy-MM-dd HH:mm:ss sss}[%-p][%-c][line:%-L] \r\n  %m%n" />  
          64.         </layout>  
          65.     </appender>  
          66.      
          67.   <!-- 根loggr -->  
          68.     <root>  
          69.         <appender-ref ref="CONSOLE" />  
          70.         <appender-ref ref="xxxx_file" />  
          71.         <appender-ref ref="xxxx_file_error" />  
          72.     </root>  
          73. </log4j:configuration>  

          六. Logback配置文件示例 
          Java代碼 
          1. <?xml version="1.0" encoding="UTF-8" ?>  
          2. <!DOCTYPE configuration>  
          3.   
          4. <configuration>  
          5.     <jmxConfigurator />  
          6.       
          7.     <!-- 控制臺輸出日志 -->  
          8.     <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">  
          9.         <layout class="ch.qos.logback.classic.PatternLayout">  
          10.             <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>  
          11.         </layout>  
          12.     </appender>  
          13.       
          14.     <!-- 文件輸出日志 (文件大小策略進行文件輸出,超過指定大小對文件備份)-->  
          15.     <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">  
          16.         <File>xxxx.log</File>  
          17.         <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">  
          18.             <FileNamePattern>xxxx.log.%i.bak</FileNamePattern>  
          19.             <MinIndex>1</MinIndex>  
          20.             <MaxIndex>12</MaxIndex>  
          21.         </rollingPolicy>  
          22.   
          23.         <triggeringPolicy  
          24.             class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">  
          25.             <MaxFileSize>100MB</MaxFileSize>  
          26.         </triggeringPolicy>  
          27.         <layout class="ch.qos.logback.classic.PatternLayout">  
          28.             <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</Pattern>  
          29.         </layout>  
          30.     </appender>  
          31.     
          32.     <appender name="FILE-ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">  
          33.          <filter class="ch.qos.logback.classic.filter.LevelFilter">  
          34.             <level>ERROR</level>  
          35.             <OnMismatch>DENY</OnMismatch>  
          36.             <OnMatch>ACCEPT</OnMatch>  
          37.         </filter>  
          38.           
          39.         <File>xxxx-err.log</File>  
          40.         <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">  
          41.             <FileNamePattern>xxxx-err.log.%i.bak</FileNamePattern>  
          42.             <MinIndex>1</MinIndex>  
          43.             <MaxIndex>3</MaxIndex>  
          44.         </rollingPolicy>  
          45.         <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">  
          46.             <MaxFileSize>100MB</MaxFileSize>  
          47.         </triggeringPolicy>  
          48.         <layout class="ch.qos.logback.classic.PatternLayout">  
          49.             <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</Pattern>  
          50.         </layout>  
          51.     </appender>  
          52.   
          53.   <!--這里指定logger name 是為jmx設置日志級別做鋪墊 -->         
          54.     <logger name="com.xxx.xxx">  
          55.         <level value="INFO" />  
          56.         <appender-ref ref="STDOUT" />  
          57.         <appender-ref ref="FILE" />  
          58.         <appender-ref ref="FILE-ERROR" />  
          59.     </logger>  
          60.   
          61.   
          62.   
          63. </configuration>  


          七. 相關簡單說明 
          ? Log4j 
          Log4j是Apache的一個開放源代碼項目,通過使用Log4j,我們可以控制日志信息輸送的目的地是控制臺、文件、GUI組件、甚至是套接口服務 器、NT的事件記錄器、UNIX Syslog守護進程等;用戶也可以控制每一條日志的輸出格式;通過定義每一條日志信息的級別,用戶能夠更加細致地控制日志的生成過程。這些可以通過一個 配置文件來靈活地進行配置,而不需要修改程序代碼 

          ? Slf4j 
          簡單日記門面(Facade)SLF4J是為各種loging APIs提供一個簡單統一的接口,從而使得最終用戶能夠在部署的時候配置自己希望的loging APIs實現。 Logging API實現既可以選擇直接實現SLF4J接的loging APIs如: NLOG4J、SimpleLogger。也可以通過SLF4J提供的API實現來開發相應的適配器如Log4jLoggerAdapter、JDK14LoggerAdapter。 

          ? Logback 
          Logback是由log4j創始人設計的又一個開源日記組件。logback當前分成三個模塊:logback-core,logback- classic和logback-access。logback-core是其它兩個模塊的基礎模塊。logback-classic是log4j的一個 改良版本。此外logback-classic完整實現SLF4J API使你可以很方便地更換成其它日記系統如log4j或JDK14 Logging。logback-access訪問模塊與Servlet容器集成提供通過Http來訪問日記的功能。
          主站蜘蛛池模板: 灯塔市| 四会市| 贵阳市| 雅江县| 茂名市| 庆安县| 绵竹市| 衡南县| 濮阳市| 武清区| 文水县| 新乐市| 酉阳| 贵阳市| 开鲁县| 陕西省| 富川| 兴化市| 昌宁县| 佛学| 莱西市| 乳源| 青田县| 西峡县| 眉山市| 唐海县| 莲花县| 太和县| 邓州市| 枣庄市| 佛坪县| 红河县| 千阳县| 惠东县| 佛山市| 海门市| 阿拉善右旗| 建阳市| 青浦区| 麻江县| 深圳市|