1、基本使用
1、配置maven
依赖
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.13.3</version>
</dependency>
2、添加日志打印
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class TestLog4j2 {
public static void main(String[] args) {
Logger log = LogManager.getLogger(TestLog4j2.class);
log.fatal("致命_FATAL");
log.error("错误_ERROR");
}
}
2、配置文件
1、Configuration
标签
status
:控制日志的打印级别,例如:status="WARN"
monitorInterval
:每隔多少秒扫描配置文件、应用配置文件最新修改
<Configuration status="WARN" monitorInterval="5"></Configuration>
2、Console
target
:可以取值SYSTEM_OUT
、SYSTEM_ERR
3、ThresholdFilter
:控制日志级别阈值
onMatch
:到达时,onMismatch
:未到达时
取值:
ACCEPT
:开启。会忽略后面的所有Filter
DENY
:关闭。会忽略后面所有的Filter
NEUTRAL
:中立。会传递给下一个Filter
进行处理
4、LevelRangeFilter
minLevel
:填写最大级别、maxLevel
填写最小级别
<Console name="Console" target="SYSTEM_OUT">
<!-- 如果达到WARN ->Deny-->
<!-- 没有达到WARN ->ACCEPT-->
<!-- NEUTRAL保持中立不选择,往下交付处理-->
<Filters>
<ThresholdFilter level="WARN" onMatch="DENY" onMismatch="NEUTRAL" />
<!-- 只会输出WARN\INFO\INFO级别-->
<ThresholdFilter level="DEBUG" onMatch="DENY" onMismatch="ACCEPT" />
<!-- 等同于上面的两个ThresholdFilter-->
<LevelRangeFilter minLevel="WARN" maxLevel="DEBUG" onMatch="DENY" onMismatch="ACCEPT"/>
</Filters>
</Console>
4、彩色打印
highlight
:不同级别显示不同颜色
%c{1.}
:简写日志包名,打印形式c.s.TestLog4j2
<Property name="PATTERN">%style{%d{HH:mm:ss.SSS}}{yellow} %highlight{[%-5p]} %style{%c{1.}}{magenta}: %m%n</Property>
日志换行打印效果
打印结果
5、
File
配置文件名称即可输出打印
<File name="File" fileName="${BASE_PATH}/${BASE_NAME}.log">
<PatternLayout pattern="${PATTERN}" />
</File>
-
Policies
:滚动文件的策略,基于时间和文件大小的策略
TimeBasedTriggeringPolicy
、SizeBasedTriggeringPolicy
-
Delete
:文件的删除规则
IfFileName
:文件名称符合的规则
IfLastModified
:文件的修改属性
<RollingFile name="RollingFile"
fileName="${BASE_PATH}/${BASE_NAME}2.log"
filePattern="${BASE_PATH}/%d{yyyy}/%d{MM}/%d{dd}/HH_%i.log.zip"
>
<PatternLayout pattern="${PATTERN}" />
<Policies>
<!-- 基于时间滚动策略:当时间跨度达到2分钟就滚动-->
<!-- 时间单位取决于filepattern的最小时间单位-->
<TimeBasedTriggeringPolicy interval="2" />
<!-- 基于文件大小滚动策略:当文件达到10KB时就滚动-->
<SizeBasedTriggeringPolicy size="10KB" />
</Policies>
<!-- 设置%i的最大值,默认是7-->
<DefaultRolloverStrategy max="10" >
<!-- maxDepth:要访问目录的最大级别数,默认1,代表仅访问basePath目录中的文件-->
<Delete bashPath="${BASE_PATH}" maxDepth="2">
<IfFileName glob="*1*.log.zip"></IfFileName>
<!-- 文件的时间超过5s-->
<IfLastModified age="5s">
<IfAny>
<IfAccumulatedFileSize exceeds="20KB" />
<IfAccumulatedFileCount exceeds="10" />
</IfAny>
</IfLastModified>
</Delete>
</DefaultRolloverStrategy>
</RollingFile>
7、Async
异步打印日志
<Async name="Async">
<Appender-ref ref="RollingFile" />
</Async>
3、SLF4j+Log4j2的实现
1、需要在maven中添加依赖
log4j-slf4j-impl
:依赖
log4j-core
和slf4j-api
,因此不需要添加此两项依赖
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.13.3</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
</dependency>
2、java代码中实现
@Slf4j
public class TestSLF4JLog4j2 {
public static void main(String[] args) {
log.error("错误_ERROR");
log.warn("警告_WARN");
}
}
网友评论