Spring mvc集成log4j2


前期環境

Spring mvc + Maven + Idea

一、下面開始配置log4j2,先簡單演示其如何配置,再仔細了解log4j2用法。

1.1  配置pom.xml,引用log4j2相關包

    <!--log4j2支持-->
      <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>2.11.2</version>
      </dependency>
      <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>2.11.2</version>
      </dependency>

如果不知道該引用哪些包,可以在log4j2官網查看其最新的Jar包  https://logging.apache.org/log4j/2.x/maven-artifacts.html

1.2  配置簡單的log4j2.xml配置文件

在項目的classpath目錄下新建log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<!-- 配置LoggerConfig,即Appenders的日志級別為WARN -->
<Configuration status="WARN">
    <!-- Appenders支持配置多個Appender,支持向不同的目標輸送日志,本例為配置向控制台輸出 -->
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{yyyy/MM/dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
        </Console>
    </Appenders>
    <!-- Loggers支持配置多個Logger,可引用不同的目標Appender,也可根據業務需求定制特定要求的Appender -->
    <Loggers>
        <Root level="info">
            <AppenderRef ref="Console" />
        </Root>
    </Loggers>
</Configuration>

1.3  在web.xml文件里引用log4j2.xml

    <context-param>
        <param-name>log4jConfiguration</param-name>
        <param-value>classpath:log4j2.xml</param-value>
    </context-param>

如果項目中使用的是Servlet2.5以上版本,則不需要配置用於log4j2的監聽,所以現在一般不需要在單獨為log4j2配Listener

1.4  測試日志輸出

從上圖看出,成功輸出日志,說明log4j2初步配置成功。

二、log4j2相關基礎

2.1  分析上例

PatternLayout寫法

<PatternLayout pattern="%d{yyyy/MM/dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />

%d{yyyy/MM/dd HH:mm:ss.SSS}      輸出時間格式                       (對應上例    2019/04/11 20:35:10.650)

[%t]                             輸出當前線程名稱             (對應上例    [http-nio-8080-exec-6] )

%-5level                      輸出日志級別,-5表示左對齊並且固定輸出5個字符,如果不足在右邊補0   (對應上例   INFO)

%logger{36}    輸出logger名稱,因為Root Logger沒有名稱,所以沒有輸出,只輸出了對應類 myProject.Controller.LoginController2

%msg                    輸出日志文本 

%n                        換行

其他常用的占位符有:

%F 輸出所在的類文件名,如LoginController2.java

%L 輸出行號

%M 輸出所在方法名

%l  輸出語句所在的行數, 包括類名、方法名、文件名、行數

2.2  log4j2日志級別

TRACE < DEBUG < INFO < WARN < ERROR < FATAL,分別用來指定這條日志信息的重要程度,Log4j有一個規則:只輸出級別不低於設定級別的日志信息,假設Loggers級別設定為INFO,則INFO、WARN、ERROR和FATAL級別的日志信息都會輸出,而級別比INFO低的DEBUG和TRACE則不會輸出。

下面還是用上例的配置測試其日志級別

由於配置文件中LoggerConfig定義的級別為WARN,即<Configuration status="WARN">,所以正常只有WARN,ERROR和FATAL會打印,但驗證結果多了個INFO,是因為在Logger中引用了控制台的Appender,並單獨指定了級別為INFO,即<Root level="info">,說實話不是很懂,所以開始了解log4j2的標簽。

2.3  log4j2常用標簽

<Configuration>    log4j2.xml的根標簽   status 設置的是log4j2自身內部的信息輸出級別,輸出到控制台

<Appenders>     這個標簽包含多個<Appender/>子標簽,用於指定日志輸出的位置及格式。待續  

下面來看一個復雜點的配置文件,將不同級別的日志輸出到不同的日志文件中,該配置參考博客

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM