log4j2各种场景对应的jar
jar管理用的是maven,在项目的pom.xml文件添加下面的代码
Log4j2 核心jar
<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>
<!-- Web项目需添加 -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-web</artifactId>
<version>2.9.1</version>
</dependency>
SLF4J Bridge和 slf4j核心包
不能同时使用 log4j-to-slf4j jar
<!--用于与slf4j保持桥接 -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.9.1</version>
</dependency>
<!-- slf4j核心包 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
</dependency>
Web Servlet Support jar
web.xml的servlet的版本要是3.0
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-web</artifactId>
<version>2.11.1</version>
</dependency>
log4j2 配置
log4j2.xml文件目录是src/main/resources/log4j2.xml会自动加载该配置文件,无需在web.xml或其他地方配置
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<!-- 控制台输出及输出格式设置 -->
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
</Console>
<!-- 日志文件输出目录及输出格式设置 -->
<RollingFile name="RollingFile" fileName="D:\logs\aaa.log"
filePattern="D:\logs\aaa\$${date:yyyy-MM}\log-%d{MM-dd-yyyy}-%i.log">
<PatternLayout>
<Pattern>%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n</Pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy interval="1"
modulate="true" />
</Policies>
</RollingFile>
</Appenders>
<Loggers>
<!-- 测试环境level=debug,生产环境level=info -->
<Root level="debug">
<AppenderRef ref="Console" />
<AppenderRef ref="RollingFile" />
</Root>
</Loggers>
</Configuration>
java调用例子
package xxx;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import junit.framework.TestCase;
public class Log4j2Test extends TestCase {
private static final Logger log = LogManager.getLogger(Log4j2Test.class);
public void log4jTest() {
log.info("this is info");
// 日志配置文件level="debug"时才会输出debug
if (log.isDebugEnabled()) {
log.debug("this is {} our {}", "debug in", "context");
}
log.warn("this is warn");
log.error("this is error");
}
}