1、Pom.xml的maven依赖包配置
<!-- log4j2 依赖--> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.12.1</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.12.1</version> </dependency> |
2、配置文件Log4j2.xml
<?xml version="1.0" encoding="UTF-8"?> <configuration status="off"> <!-- 定义下面的引用名 --> <Properties> <property name="log_pattern">%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n</property> <property name="log_pattern2">%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n</property> <property name="basePath">src/logs</property> </Properties> <!--先定义所有的appender --> <appenders> <!--这个输出控制台的配置 --> <Console name="Console" target="SYSTEM_OUT"> <!-- 控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch) --> <ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY"/> <!-- 这个都知道是输出日志的格式 --> <PatternLayout pattern="${log_pattern}"/> </Console> <RollingFile name="TASK" fileName="${basePath}/ciphersdk.log" filePattern="${basePath}/ciphersdk_%d{yyyy-MM-dd}.log" > <!-- 输出格式 --> <PatternLayout pattern="${log_pattern2}" /> <Policies> <!-- 每1天更新一次,此处查阅网上和官方示例中,都是以小时出现,我测试是以天为单位。(官方文档中说明按item类型是否是小时,但没找到在哪里设置item类型)另有其他各类型策略,请参阅官方文档 --> <TimeBasedTriggeringPolicy modulate="true" interval="1" /> <!-- 此处为每个文件大小策略限制,使用它一般会在文件中filePattern采用%i模式 --> <!-- <SizeBasedTriggeringPolicy size="128KB" /> --> </Policies> <!-- 最多备份30天以内的日志,此处为策略限制,Delete中可以按自己需要用正则表达式编写 --> <!-- DefaultRolloverStrategy字段中加入max=“30”经测试是配合SizeBasedTriggeringPolicy限制%i的存在数量,并没有发现是网上流传的是最多保存多少个文件的限制,也或许是我写的有问题 --> <DefaultRolloverStrategy> <Delete basePath="${basePath}" maxDepth="1"> <IfFileName glob="*.log" /> <IfLastModified age="30d" /> </Delete> </DefaultRolloverStrategy> </RollingFile> </appenders> <!--然后定义logger,只有定义了logger并引入的appender,appender才会生效 --> <loggers> <root level="trace"> <!--appender-ref ref="Console"/--> <appender-ref ref="TASK" /> </root> </loggers> </configuration> |
3、测试Demo代码:log4j2Test.java
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; public class log4j2Test { private static Logger logger= LogManager.getLogger(LogManager.ROOT_LOGGER_NAME); public static void main(String[] args) { for(int i=0;i<2;i++){ // 记录trace级别的信息 logger.trace("log4j2日志输出:This is trace message."); // 记录debug级别的信息 logger.debug("log4j2日志输出:This is debug message."); // 记录info级别的信息 logger.info("log4j2日志输出:This is info message."); // 记录error级别的信息 logger.error("log4j2日志输出:This is error message fenfen 是 个 tester."); } } } |
4、日志归档
参考: