2011-01-19

在 Spring 中使用 logging

  • 先使用 Maven 建立 Spring 專案,參考使用 Maven 建立 Java、Web 和 Spring 專案
  •  使用 log4j
    • 於 pom.xml 中加入以下 dependencies,commons-logging 可以不用加,因為在 spring-context 中有用到。

      <dependency>
      <groupId>commons-logging</groupId>
      <artifactId>commons-logging</artifactId>
      <version>1.1.1</version>
      <scope>runtime</scope>
      </dependency>


      <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.16</version>
      <scope>runtime</scope>
      </dependency>


    • 在 src/main/resources 下加入 log4j.xml。

      log4j.rootLogger=DEBUG, A1
      log4j.appender.A1=org.apache.log4j.ConsoleAppender
      log4j.appender.A1.layout=org.apache.log4j.PatternLayout
      log4j.appender.A1.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n


    • commons-logging 程式範例

      private Log log = LogFactory.getLog(AppTest.class);
      log.debug("...");
  • 使用 SLF4J 取代 commons-logging
    • SLF4J 不像 commons-logging 是在 runtime 決定 logging framework,而是在 compile 時就決定,所以 SLF4J  的效能比 commons-logging 好。
    • 於 pom.xml 中加入以下 dependencies,必須在 spring-context 裡剔除 common-logging,然後加入三個 SLF4J dependencies 和 log4j。

      <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>3.0.5.RELEASE</version>
      <scope>runtime</scope>
      <exclusions>
      <exclusion>
      <groupId>commons-logging</groupId>
      <artifactId>commons-logging</artifactId>
      </exclusion>
      </exclusions>
      </dependency>

      <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>jcl-over-slf4j</artifactId>
      <version>1.6.1</version>
      <scope>runtime</scope>
      </dependency>

      <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
      <version>1.6.1</version>
      <scope>runtime</scope>
      </dependency>

      <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
      <version>1.6.1</version>
      <scope>runtime</scope>
      </dependency>

      <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.16</version>
      <scope>runtime</scope>
      </dependency>


    • 在 src/main/resources 下加入 log4j.xml,同上。
    • 一樣是用 commons-logging 介面(來自 jcl-over-slf4j dependency ),程式範例同上。

沒有留言:

張貼留言