跳到主要內容

Log4j2在web application的使用

使用環境:

JDK8
Tomcat 9.1

使用log4j2版本:

V2.11.1

Maven dependency

  1. <dependencies>
  2. <dependency>
  3. <groupId>org.apache.logging.log4j</groupId>
  4. <artifactId>log4j-api</artifactId>
  5. <version>2.11.1</version>
  6. </dependency>
  7. <dependency>
  8. <groupId>org.apache.logging.log4j</groupId>
  9. <artifactId>log4j-core</artifactId>
  10. <version>2.11.1</version>
  11. </dependency>
  12. </dependencies>

Configuration

log4j在web application可以使用log4jConfiguration這個context parameter.
另外log4j會去搜尋
1. servlet的context resource,像是web application的root dir,名稱為logging.xml(要有define context resource的location)
2. 如果沒有定義location,log4j會去搜尋WEB-INF這個folder以log4j2的名稱開頭的檔案
3. 一般的搜尋方式是會去class path找,也就是在src的resource目錄放的話,會在target的class path出現。


開始於結束

log4j2會在web application佈署時開始,而在回收時結束。

設定檔範例:

<?xml version="1.0" encoding="utf-8"?>
<Configuration status="info">

  <Properties>
    <Property name="logdir">/home/janbodnar/tmp</Property>
    <Property name="layout">%d [%t] %-5p %c- %m%n</Property>
  </Properties>
  
  <Appenders>

    <RollingFile name="LOCALHOST"
        fileName="${logdir}/localhost.log"
        filePattern="${logdir}/localhost.%d{yyyy-MM-dd}-%i.log">
      <PatternLayout pattern="${layout}"/>
      <Policies>
        <TimeBasedTriggeringPolicy />
        <SizeBasedTriggeringPolicy size="1 MB" />
      </Policies>
      <DefaultRolloverStrategy max="10" />
    </RollingFile>

  </Appenders>
  
  <Loggers>

    <Logger name="com.zetcode"
        level="info" additivity="false">
      <AppenderRef ref="LOCALHOST" />
    </Logger>
    
    <Root level="error">
    </Root>    

  </Loggers>
</Configuration>


留言