久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長(zhǎng)資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      slf4j 搭配 log4j2 處理日志

      關(guān)于 log4j

      Log4j + Slf4j 的使用組合最為常見,但是我們知道 Log4j 目前已經(jīng)停止更新了。Apache推出了新的 Log4j2 來代替 Log4j,Log4j2 是對(duì)Log4j 的升級(jí),與其前身 Log4j 相比有了顯著的改進(jìn),并提供了許多 Logback 可用的改進(jìn),同時(shí)解決了 Logback 體系結(jié)構(gòu)中的一些固有問題。因此,Log4j2 + Slf4j 應(yīng)該是未來的大勢(shì)所趨。

      關(guān)于 slf4j

      1. LF4J不同于其他日志類庫(kù),與其它日志類庫(kù)有很大的不同。SLF4J(Simple logging Facade for Java)不是一個(gè)真正的日志實(shí)現(xiàn),而是一個(gè)抽象層( abstraction layer),它允許你在后臺(tái)使用任意一個(gè)日志類庫(kù)。如果是在編寫供內(nèi)外部都可以使用的API或者通用類庫(kù),那么你真不會(huì)希望使用你類庫(kù)的客戶端必須使用你選擇的日志類庫(kù)。
      2. 如果一個(gè)項(xiàng)目已經(jīng)使用了log4j,而你加載了一個(gè)類庫(kù),比方說 Apache Active MQ——它依賴于于另外一個(gè)日志類庫(kù) logback,那么你就需要把它也加載進(jìn)去。但如果 Apache Active MQ 使用了 SLF4J,你可以繼續(xù)使用你的日志類庫(kù)而無需忍受加載和維護(hù)一個(gè)新的日志框架的痛苦。
      3. 總的來說,SLF4J使你的代碼獨(dú)立于任意一個(gè)特定的日志API,這是對(duì)于 API 開發(fā)者的很好的思想。雖然抽象日志類庫(kù)的思想已經(jīng)不是新鮮的事物,而且 Apache commons logging 也已經(jīng)在使用這種思想了,但 SLF4J 正迅速成為Java世界的日志標(biāo)準(zhǔn)。

      案例使用

      引入 slf4j 和 log4j2 的核心包

      <!-- slf4j核心包-->  <dependency>      <groupId>org.slf4j</groupId>      <artifactId>slf4j-api</artifactId>      <version>1.7.25</version>  </dependency>  <dependency>      <groupId>org.slf4j</groupId>      <artifactId>jcl-over-slf4j</artifactId>      <version>1.7.25</version>      <scope>runtime</scope>  </dependency>    <!--log4j2核心包-->  <dependency>      <groupId>org.apache.logging.log4j</groupId>      <artifactId>log4j-core</artifactId>      <version>2.8.2</version>  </dependency>  <dependency>      <groupId>org.apache.logging.log4j</groupId>      <artifactId>log4j-api</artifactId>      <version>2.8.2</version>  </dependency>  <dependency>      <groupId>org.apache.logging.log4j</groupId>      <artifactId>log4j-slf4j-impl</artifactId>      <version>2.8.2</version>  </dependency>  <dependency>      <groupId>org.apache.logging.log4j</groupId>      <artifactId>log4j-web</artifactId>      <version>2.8.2</version>      <scope>runtime</scope>  </dependency>    <!--log4j2 異步依賴-->  <dependency>      <groupId>com.lmax</groupId>      <artifactId>disruptor</artifactId>      <version>3.3.6</version>  </dependency>    

      log4j2.xml

      <?xml version="1.0" encoding="UTF-8"?>  <configuration status="off" monitorInterval="120">      <properties>          <property name="LOG_HOME">/mytest_log</property>      </properties>      <appenders>          <Console name="Console" target="SYSTEM_OUT">              <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>          </Console>            <!--RollingFile 為全局同步 RandomAccessFile 為異步-->          <RollingRandomAccessFile name="rootAppeder"                                   fileName="${LOG_HOME}/rattanapi.log"                                   filePattern="${LOG_HOME}/$${date:yyyy-MM}/rattanapi-root-%d{yyyy-MM-dd}-%i.log">              <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %ex%msg%n"/>              <Policies>                  <TimeBasedTriggeringPolicy interval="1"/>                  <SizeBasedTriggeringPolicy size="100 MB"/>              </Policies>              <DefaultRolloverStrategy max="30"/>          </RollingRandomAccessFile>            <!--錯(cuò)誤日志輸出-->          <RollingRandomAccessFile name="errorAppeder"                                   fileName="${LOG_HOME}/rattanapi-error.log"                                   filePattern="${LOG_HOME}/$${date:yyyy-MM}/rattanapi-error-%d{yyyy-MM-dd}-%i.log">              <Filters>                  <ThresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="DENY"/>              </Filters>              <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %ex%msg%n"/>              <Policies>                  <TimeBasedTriggeringPolicy interval="1"/>                  <SizeBasedTriggeringPolicy size="100 MB"/>              </Policies>              <DefaultRolloverStrategy max="30"/>          </RollingRandomAccessFile>        </appenders>        <loggers>          <asyncRoot level="info">              <!--根據(jù)配置文件是否打開 console輸出 -->              <appender-ref ref="Console"/>              <appender-ref ref="rootAppeder"/>              <appender-ref ref="errorAppeder"/>          </asyncRoot>      </loggers>  </configuration>

      web.xml中設(shè)置log4j2的監(jiān)聽器和過濾器(servlet3.0及以上版本不需要該步操作)開發(fā)Servlet3.0的程序需要一定的環(huán)境支持。

      <!--對(duì)于log4j2,Servlet2.5以前的版本需要-->     <listener>        <listener-class>org.apache.logging.log4j.web.Log4jServletContextListener</listener-class>     </listener>     <filter>        <filter-name>log4jServletFilter</filter-name>        <filter-class>org.apache.logging.log4j.web.Log4jServletFilter</filter-class>     </filter>  <filter-mapping>        <filter-name>log4jServletFilter</filter-name>        <url-pattern>/*</url-pattern>        <dispatcher>REQUEST</dispatcher>        <dispatcher>FORWARD</dispatcher>        <dispatcher>INCLUDE</dispatcher>        <dispatcher>ERROR</dispatcher>   </filter-mapping>

      注意:log4j2不再支持properties文件了,只支持xml,json或是yaml,不指定位置的情況下默認(rèn)在src/main/resources下查找。

      如果需要自定義位置,需要在上面的web.xml中添加以下代碼

      <context-param>      <param-name>contextConfigLocation</param-name>      <param-value>classpath:applicationContext.xml</param-value>  </context-param>  <context-param>      <param-name>log4jConfiguration</param-name>      <param-value>classpath:log4j2.xml</param-value>  </context-param>
      import org.slf4j.Logger;  import org.slf4j.LoggerFactory;    public class Main {      private static final Logger logger = LoggerFactory.getLogger(Main.class);      public static void main(String[] args) {      String world = "world";      logger.info("hellp world:{}",world);      logger.error("exception e");      }  }
      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)