天天看點

slf4j + log4j2配置日志引擎

maven包依賴引用

<dependency>
   <groupId>org.apache.logging.log4j</groupId>
   <artifactId>log4j-api</artifactId>
   <version>2.2</version>
</dependency>
<dependency>
   <groupId>org.apache.logging.log4j</groupId>
   <artifactId>log4j-core</artifactId>
   <version>2.2</version>
</dependency>
<dependency>
   <groupId>org.apache.logging.log4j</groupId>
   <artifactId>log4j-slf4j-impl</artifactId>
   <version>2.2</version>
</dependency>
<dependency>
   <groupId>org.apache.logging.log4j</groupId>
   <artifactId>log4j-jcl</artifactId>
   <version>2.2</version>
</dependency>
<dependency>
	<groupId>org.slf4j</groupId>
	<artifactId>slf4j-api</artifactId>
	<version>1.7.7</version>
</dependency>
           

log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
<!-- 日志級别: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
<!-- 
參數解析:
  %t:線程名稱
  %p:日志級别
  %c:日志消息所在類名
  %m:消息内容
  %M:輸出執行方法
  %d:發生時間,%d{yyyy-MM-dd HH:mm:ss,SSS},實際輸出如:2019-12-13 10:34:28,921
  %x: 輸出和目前線程相關聯的NDC(嵌套診斷環境),尤其用到像java servlets這樣的多客戶多線程的應用中。
  %L:代碼中的行數
  %n:換行
-->
<Configuration status="error">
  <Properties>
    <!-- 配置日志檔案輸出目錄,此配置将日志輸出到tomcat根目錄下的logs檔案夾, 也可以選擇配置為${sys:user.home}/logs,是指向目前使用者目錄下的logs檔案夾 -->
    <Property name="LOG_HOME">${sys:catalina.home}/logs</Property>
  </Properties>
  <Appenders>
    <Console name="Console" target="SYSTEM_OUT">
      <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n" />
    </Console>
    <RollingFile name="RollingFileDebug" fileName="${LOG_HOME}/debug.log"
      filePattern="${LOG_HOME}/$${date:yyyy-MM}/debug-%d{yyyy-MM-dd}-%i.log">
      <ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY" />
      <PatternLayout pattern="[%d{yyyy-MM-dd HH:mm:ss:SSS}] [%p] - %l - %m%n" />
      <Policies>
        <TimeBasedTriggeringPolicy />
        <SizeBasedTriggeringPolicy size="10 MB" />
      </Policies>
    </RollingFile>
    <RollingFile name="RollingFileInfo" fileName="${LOG_HOME}/info.log"
      filePattern="${LOG_HOME}/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log">
      <!--控制台隻輸出level及以上級别的資訊(onMatch),其他的直接拒絕(onMismatch) -->
      <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY" />
      <PatternLayout pattern="[%d{yyyy-MM-dd HH:mm:ss:SSS}] [%p] - %l - %m%n" />
      <Policies>
        <TimeBasedTriggeringPolicy />
        <SizeBasedTriggeringPolicy size="10 MB" />
      </Policies>
    </RollingFile>
    <RollingFile name="RollingFileWarn" fileName="${LOG_HOME}/warn.log"
      filePattern="${LOG_HOME}/$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log">
      <ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY" />
      <PatternLayout pattern="[%d{yyyy-MM-dd HH:mm:ss:SSS}] [%p] - %l - %m%n" />
      <Policies>
        <TimeBasedTriggeringPolicy />
        <SizeBasedTriggeringPolicy size="10 MB" />
      </Policies>
    </RollingFile>
    <RollingFile name="RollingFileError" fileName="${LOG_HOME}/error.log"
      filePattern="${LOG_HOME}/$${date:yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log">
      <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY" />
      <PatternLayout pattern="[%d{yyyy-MM-dd HH:mm:ss:SSS}] [%p] - %l - %m%n" />
      <Policies>
        <TimeBasedTriggeringPolicy />
        <SizeBasedTriggeringPolicy size="10 MB" />
      </Policies>
    </RollingFile>
  </Appenders>
  <Loggers>
    <Root level="ALL">
      <AppenderRef ref="Console" />
      <AppenderRef ref="RollingFileDebug" />
      <AppenderRef ref="RollingFileInfo" />
      <AppenderRef ref="RollingFileWarn" />
      <AppenderRef ref="RollingFileError" />
    </Root>
  </Loggers>
</Configuration>
           

log4j 2.x manual configuration

繼續閱讀