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中只有普通类输出的日志。