基於 Spring Boot 的 SSM 環境整合四:整合 log4j2
阿新 • • 發佈:2018-12-19
spring boot 最新的版本並不支援log4j,但支援log4j的升級版本 ---- log4j2。
1、修改pom.xml以增加log4j相關配置
首先是修改org.springframework.boot以排除相關的log資源:
<exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </exclusion> </exclusions>
然後加入log4j配置:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>!
修改後完整的pom.xml如下:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.whowii</groupId> <artifactId>website_java4</artifactId> <version>0.0.1-SNAPSHOT</version> <!-- 引入spring-boot-start-parent 以提供dependency management,也就是依賴管理,引入以後在宣告其它dependency的時候就不需要version了 --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.3.RELEASE</version> </parent> <dependencies> <!-- 引入spring-boot-starter-web 以包含spring webmvc和tomcat等web開發的特性 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </exclusion> </exclusions> </dependency> <!-- log4j2 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j2</artifactId> </dependency> <!-- 日誌工具 <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-logging-juli</artifactId> <version>8.0.23</version> </dependency> --> <!-- spring mvc --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> </dependencies> <build> <finalName>website_java4</finalName> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> <!-- 增加main方式啟動的配置,若使用maven的spring-boot:run方式啟動則不需要此配置 --> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <!-- 設定主類入口 --> <mainClass>com.whowii.website4.AppBoot</mainClass> <!-- 設定classpath --> <addClasspath>true</addClasspath> <classpathPrefix>lib/</classpathPrefix> </configuration> </plugin> </plugins> </build> <!-- 設定編碼 --> <properties> <spring.version>4.3.8.RELEASE</spring.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> </project>
完成後,記得執行下 Maven install。
2、增加 log4j2 配置檔案
在 src/main/resources 中增加 log4j2 配置檔案“log4j2.xml”,內容如下:
<?xml version="1.0" encoding="UTF-8"?> <configuration> <Appenders> <!-- 輸出控制檯 --> <Console name="CONSOLE" target="SYSTEM_OUT"> <PatternLayout charset="UTF-8" pattern="[%d] - [%c] - [%highlight{%level}] - [%method - %L] - [%t] - %msg%n" /> </Console> <!-- 輸出到檔案 每當檔案超過 size 規定的大小,則此日誌會自動存入按年份-月份建立的資料夾下面並進行壓縮 --> <File name="FILE" fileName="logs/sys.log" filePattern="logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz"> <PatternLayout pattern="[%d] - [%c] - [%highlight{%level}] - [%l] - [%t] - %msg%n" /> <!-- 日誌檔案最大50M --> <SizeBasedTriggeringPolicy size="50MB"/> <!-- 同一資料夾下最多20個檔案(預設7個) --> <DefaultRolloverStrategy max="20"/> </File> </Appenders> <Loggers> <root level="info"> <AppenderRef ref="CONSOLE" /> <AppenderRef ref="FILE" /> </root> </Loggers> </configuration>
3、修改 spring boot 配置檔案
修改 application.properties 追加如下內容:
logging.config= classpath:log4j2.xml
完成後的 application.properties 內容如下:
# spring mvc 配置(檢視解析器)
spring.mvc.view.prefix=/WEB-INF/view/
spring.mvc.view.suffix=.jsp
# log4j2 配置
logging.config= classpath:log4j2.xml
4、使用 log4j2
修改DemoController以增加日誌輸出,完成後的DemoController如下:
package com.whowii.website4.admin.controller;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/demo")
public class DemoController {
private static final Logger logger = LogManager.getLogger(DemoController.class);
@GetMapping("/index")
public String index() {
logger.trace("追蹤,是最低的日誌級別,相當於追蹤程式的執行,一般不怎麼使用");
logger.debug("一般在開發中,都將其設定為最低的日誌級別.");
logger.info("輸出感興趣的資訊,我在開發中一般都會用info去輸出.");
logger.warn("警告.有些時候,雖然程式不會報錯,但是還是需要告訴程式設計師的.");
logger.error("錯誤,這個在開發中也挺常用的");
return "demo-index";
}
}
5、測試結果
1)、MyEclispe控制檯內容如下:
2)、重新整理專案目錄,檢視多了個 logs 資料夾:
開啟其中的 sys.log 內容如下: