Log4j2日志框架及其引入
Log4j2日志框架
日志信息的级别
从低到高的级别如下:
设置日志级别后,会自动屏蔽更低的级别并不再输出
输出路径
LOG4j2框架可以规定日志输出在日志文件还是控制台中。
输出格式
LOG4j2可以定义日志的输出格式。
向项目引入LOG4j2日志框架
添加依赖
向/pom.xml中添加依赖项。
1.修改原本的spring-boot-starter-web和spring-boot-starter-test,在这个整合包里移除其中的日志模块
| <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
|
2.添加log4j2的依赖项。
| <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
<!-- 如果不需要强制指定特定版本(跟随 Spring Boot 默认版本即可),可以删除下面的内容-->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-bom</artifactId>
<version>2.24.3</version>
<type>pom</type>
</dependency>
|
创建配置文件
在/src/main/resources下创建log4j2.xml文件,并填写如下内容:
| <?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Properties>
<Property name="LOG_PATH">./logs</Property>
<Property name="APP_NAME">blog</Property>
<Property name="LOG_PATTERN">%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n</Property>
</Properties>
<Appenders>
<Console name="Console" target="SYSTEM_OUT" follow="true">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %highlight{%-5level} %style{%logger{36}}{cyan} - %msg%n" disableAnsi="false" noConsoleNoAnsi="false"/>
</Console>
<RollingFile name="RollingFile" fileName="${LOG_PATH}/${APP_NAME}.log"
filePattern="${LOG_PATH}/$${date:yyyy-MM}/${APP_NAME}-%d{yyyy-MM-dd}-%i.log">
<ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout pattern="${LOG_PATTERN}" />
<Policies>
<TimeBasedTriggeringPolicy interval="1"/>
<SizeBasedTriggeringPolicy size="10MB"/>
</Policies>
<DefaultRolloverStrategy max="20"/>
</RollingFile>
</Appenders>
<Loggers>
<Logger name="org.springframework" level="WARN"/>
<Logger name="org.mybatis" level="WARN"/>
<!-- 规定对于online.umbracore.blog下产生的日志,显示Debug及以上级别的日志信息 -->
<Logger name="online.umbracore.blog" level="DEBUG" additivity="false">
<AppenderRef ref="Console"/>
<AppenderRef ref="RollingFile"/>
</Logger>
<!-- 规定默认情况下,只显示INFO及以上的日志信息 -->
<Root level="INFO">
<AppenderRef ref="Console"/>
<AppenderRef ref="RollingFile"/>
</Root>
</Loggers>
</Configuration>
|
手动写入日志信息
创建Logger对象
logger对象类似于Canvas的上下文对象,通过调用方法写入日志到log文件和控制台。
| //使用import org.slf4j下的Logger类
//参数为创建 的logger对象直接所属的类名,即在内部类的中,需要填写内部类的类名+.class
private Logger logger= LoggerFactory.getLogger(UserTest.class);
|
调用Logger对象
Logger提供了不同方法用于日志写入,参数均为写入的日志的消息。