版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xz2001/article/details/83817435
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;
@Controller
@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、测试结果
启动程序(具体操作参见前文),访问“http://127.0.0.1:8080/demo/index”,查看两个输出:
1)、MyEclispe控制台内容如下:
2)、刷新项目目录,查看多了个 logs 文件夹:
打开其中的 sys.log 内容如下: