问题现象:
为了控制输出的日志级别,加上了log4j2.xml配置。但无论如何调整level,输出级别都不生效。据我所知,需要配置的只有一个log4j2.xml才对啊……
log4j.xml已经在classpath中,请问还有什么要注意的?
Hello.java
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
public class Hello {
private static final Logger logger = LogManager.getLogger(Hello.class);
public static void main(String[] args) throws IOException {
logger.info("info");
logger.trace("trace");
logger.error("error");
log4j2.xml
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH🇲🇲ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
</Appenders>
<Loggers>
<Root level="error">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>
pom.xml
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.4.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.10.2</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
受楼上回答启发,想到应该是Spring Boot的问题。问题出在pom.xml配置,配置代码在最后。
楼上的写法和官方文档给出的例子相似,但我根据官方文档试了下,却不行。原因是我使用的是Spring Boot1.5.4,使用log4j2版本2.7,但我的logger的具体写法参照log4j2的官方文档,也就是 2.8.2。
又因为找不到2.7的文档,所以只好覆盖掉官方的版本。并且我发现,不需要exclusion排除logback也是可以的。以下是配置:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.8.2</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.8.2</version>
</dependency>
Application.property
logging.config=classpath:log4j2.xml