log4j2日志与log4j日志有相似的地方,配置文件都差不多。这里介绍log4j2的简单使用。
第一步、新建maven工程,配置pom.xml文件,引入log4j2的依赖jar包
工程目录,现在log4j2已经到2.8版本了,工程中使用的是2.7。
pom.xml配置文件
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<log4j2>2.7</log4j2>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>${log4j2}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>${log4j2}</version>
</dependency>
</dependencies>
第二步、配置log4j2配置文件
配置文件配置大致和log4j一样,稍微有变动。可以自定义变量。日志输出格式字段名称有变化。
如:level表示日志级别,在log4j中使用p表示级别
logger表示类名,在log4j中c表示类名
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN" monitorInterval="600">
<Properties>
<!-- 自定义变量 -->
<property name="log.home">logs</property>
<property name="log.pattern">%d{yyyy-MM-dd HH:mm:ss} [%t] %-5level %logger{36} %msg%n</property>
</Properties>
<Appenders>
<!-- 控制台输出日志 -->
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="${log.pattern}"/>
</Console>
<!-- 按日期生成策略文件日志 -->
<RollingRandomAccessFile name="LogFile"
immediateFlush="true"
fileName="${log.home}/service.log"
filePattern="${log.home}/service.%d{yyyy-MM-dd}.log.gz">
<PatternLayout>
<pattern>${log.pattern}</pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
</Policies>
</RollingRandomAccessFile>
</Appenders>
<Loggers>
<Logger name="com.lenovo.log4j2.user" level="warn" additivity="false">
<appender-ref ref="Console"/>
</Logger>
<root level="info">
<appender-ref ref="Console"/>
<appender-ref ref="LogFile"/>
</root>
</Loggers>
</Configuration>
第三步、书写日志测试类
这里一个自定义日志类
package com.lenovo.log4j2.user;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class UserLog {
public static final Logger log = LogManager.getLogger(UserLog.class);
public static void main(String[] args) {
String logstr = "hello log4j,this is a message by user self define!";
log.debug(logstr);
log.info(logstr);
log.warn(logstr);
log.error(logstr);
}
}和普通日志类
package com.lenovo.log4j2;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class App {
public static final Logger log = LogManager.getLogger(App.class);
public static void main(String[] args) {
String logstr = "hello log4j ,this is a message";
log.debug(logstr);
log.info(logstr);
log.warn(logstr);
log.error(logstr);
}
}
他们的区别是自定义类用来自定义日志输出,日志级别设置的是warn,对应在com.lenovo.log4j2.user目录中。第四步、查看日志(控制台日志和文件日志)
自定义控制台日志(输出warn级别以上两条)
普通控制台日志(输出info级别以上三条)
文件日志
对于自定义日志,并没有加入文件日志的输出中,所以运行之后,service.log中只有普通类输出的日志。
Log4j2 日志配置与使用
326

被折叠的 条评论
为什么被折叠?



