本文主要是介绍【第2章】整合log4j2框架,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 前言
- 一、介绍
- 二、代码部分
- 1.引入pom
- 2.代码部分
- 2.1 spring bean
- 2.2 springContext.xml
- 2.3 log4j2.xml
- 2.4 测试类
- 2.5 执行结果
- 总结
前言
log4j2是目前使用范围最广的一款日志框架,使用spring可以很方便地整合到你的应用当中。
一、介绍
log4j2在当前项目的classpath下添加配置文件log4j2.xml
即可完成配置
二、代码部分
1.引入pom
<!-- log4j2 -->
<dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId><version>2.19.0</version></dependency><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-slf4j2-impl</artifactId><version>2.19.0</version></dependency>
2.代码部分
代码在上一篇博客的基础上,增加内容
2.1 spring bean
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;/*** Create by zjg on 2024/3/3*/
public class User {private Logger logger = LoggerFactory.getLogger(User.class);public User() {logger.debug("User无参构造器");}public void login(){logger.debug("用户登录中.....");}
}
2.2 springContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><bean name="user" class="org.example.entity.User"></bean>
</beans>
2.3 log4j2.xml
<?xml version="1.0" encoding="UTF-8"?>
<!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
<!--Configuration后面的status,这个用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,你会看到log4j2内部各种详细输出-->
<!--monitorInterval:Log4j能够自动检测修改配置 文件和重新配置本身,设置间隔秒数-->
<configuration status="WARN" monitorInterval="30"><Properties><Property name="LOG_HOME">../logs/spring-first/</Property><!--_TRACE_ID,业务自定义变量--><property name="ALL_PATTERN">[%d{yyyy-MM-dd HH:mm:ss.SSS}][%t][%p]- %l - %m%n</property><property name="CHARSET">UTF-8</property><property name="FILE_SIZE">1GB</property><property name="FILE_INDEX_MAX">30</property></Properties><!--先定义所有的appender--><appenders><!--这个输出控制台的配置--><console name="Console" target="SYSTEM_OUT"><!--输出日志的格式--><PatternLayout pattern="${ALL_PATTERN}"/></console><!--文件会打印出所有信息,这个log每次运行程序会自动清空,由append属性决定,这个也挺有用的,适合临时测试用--><File name="log" fileName="${LOG_HOME}/spring-first.log" append="false"><PatternLayout pattern="${ALL_PATTERN}"/></File><!-- 这个会打印出所有的debug及以下级别的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档--><RollingFile name="RollingFileDebug" fileName="${LOG_HOME}/debug.log"filePattern="${LOG_HOME}/logs/$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log"><ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY"/><PatternLayout pattern="${ALL_PATTERN}"/><Policies><TimeBasedTriggeringPolicy/><SizeBasedTriggeringPolicy size="100 MB"/></Policies><!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件,这里设置了20 --><DefaultRolloverStrategy max="20"/></RollingFile><RollingFile name="RollingFileInfo" fileName="${LOG_HOME}/info.log"filePattern="${LOG_HOME}/logs/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log"><!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)--><ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/><PatternLayout pattern="${ALL_PATTERN}"/><Policies><TimeBasedTriggeringPolicy/><SizeBasedTriggeringPolicy size="100 MB"/></Policies></RollingFile><RollingFile name="RollingFileError" fileName="${LOG_HOME}/error.log"filePattern="${LOG_HOME}/logs/$${date:yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log"><ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/><PatternLayout pattern="${ALL_PATTERN}"/><Policies><TimeBasedTriggeringPolicy/><SizeBasedTriggeringPolicy size="100 MB"/></Policies></RollingFile></appenders><!--然后定义logger,只有定义了logger并引入的appender,appender才会生效--><loggers><logger name="org.springframework" level="DEBUG"></logger><root level="all"><appender-ref ref="Console"/><appender-ref ref="RollingFileDebug"/><appender-ref ref="RollingFileInfo"/><appender-ref ref="RollingFileError"/></root></loggers>
</configuration>
2.4 测试类
import org.example.entity.User;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;/*** Create by zjg on 2024/3/3*/
public class Main {private static Logger logger = LoggerFactory.getLogger(Main.class);public static void main(String[] args) {logger.debug("Hello log4j2!");ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("springContext.xml");User user = (User)context.getBean("user");user.login();}
}
2.5 执行结果
总结
回到顶部
官方网站
官方文档
视频学习
这篇关于【第2章】整合log4j2框架的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!