小白的springboot之路(十二)、集成log4j2日志
程序员文章站
2023-09-28 20:46:26
0、前言 日志记录对系统来说必不可少,spring boot中常用的日志组件有log4j、logback、log4j2,其中logback是spring boot默认的,已自带;选用log4j2就可以,其他的不必去关注; 一、集成log4j2日志组件 1、pom依赖中去除默认的logback日志框架 ......
0、前言
日志记录对系统来说必不可少,spring boot中常用的日志组件有log4j、logback、log4j2,其中logback是spring boot默认的,已自带;选用log4j2就可以,其他的不必去关注;
一、集成log4j2日志组件
1、pom依赖中去除默认的logback日志框架:
<dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-web</artifactid> <!-- 7-1 去掉自带的日志依赖--> <exclusions> <exclusion> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-logging</artifactid> </exclusion> </exclusions> </dependency>
2、添加依赖
<!-- 7-2、集成log4j2 --> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-log4j2</artifactid> </dependency> <!-- 额外添加disruptor依赖,用于解决log4j2日志版本较低报错问题--> <dependency> <groupid>com.lmax</groupid> <artifactid>disruptor</artifactid> <version>3.4.2</version> </dependency>
3、增加日志配置文件log4j2-dev.xml
<?xml version="1.0" encoding="utf-8"?> <!--设置log4j2的自身log级别为warn--> <!--日志级别以及优先级排序: off > fatal > error > warn > info > debug > trace > all --> <!--configuration后面的status,这个用于设置log4j2自身内部的信息输出,可以不设置, 当设置成trace时,你会看到log4j2内部各种详细输出--> <!--monitorinterval:log4j能够自动检测修改配置 文件和重新配置本身,设置间隔秒数--> <configuration status="info" monitorinterval="30"> <properties> <!-- 输出路径 --> <property name="logpath">/log4j/logs/log/dev</property> </properties> <appenders> <console name="console" target="system_out"> <patternlayout pattern="[%d][%-5p][%t] %m (%f:%l)%n"/> </console> <rollingfile name="debug" filename="${logpath}/debug/erp_debug.log" filepattern="${logpath}/debug/erp_debug_%d{yyyy-mm-dd}-%i.log"> <filters> <thresholdfilter level="info" onmatch="deny" onmismatch="neutral"/> <thresholdfilter level="debug" onmatch="accept" onmismatch="deny"/> </filters> <patternlayout pattern="[%d][%-5p][%t] %m (%f:%l)%n"/> <policies> <timebasedtriggeringpolicy interval="24" modulate="true"/> <sizebasedtriggeringpolicy size="50 mb"/>\ </policies> <defaultrolloverstrategy max="30"> <delete basepath="${logpath}/debug" maxdepth="1"> <iffilename glob="erp_debug_*.log"/> <iflastmodified age="15d"/> </delete> </defaultrolloverstrategy> </rollingfile> <rollingfile name="info" filename="${logpath}/info/erp_info.log" filepattern="${logpath}/info/erp_info_%d{yyyy-mm-dd}-%i.log"> <filters> <thresholdfilter level="warn" onmatch="deny" onmismatch="neutral"/> <thresholdfilter level="info" onmatch="accept" onmismatch="deny"/> </filters> <patternlayout pattern="[%d][%-5p][%t] %m (%f:%l)%n"/> <policies> <timebasedtriggeringpolicy interval="24" modulate="true"/> <sizebasedtriggeringpolicy size="50 mb"/>\ </policies> <defaultrolloverstrategy max="30"> <delete basepath="${logpath}/info" maxdepth="1"> <iffilename glob="erp_info_*.log"/> <iflastmodified age="15d"/> </delete> </defaultrolloverstrategy> </rollingfile> <rollingfile name="warn" filename="${logpath}/warn/erp_warn.log" filepattern="${logpath}/warn/erp_warn_%d{yyyy-mm-dd}-%i.log"> <filters> <thresholdfilter level="error" onmatch="deny" onmismatch="neutral"/> <thresholdfilter level="warn" onmatch="accept" onmismatch="deny"/> </filters> <patternlayout pattern="[%d][%-5p][%t] %m (%f:%l)%n"/> <policies> <timebasedtriggeringpolicy interval="24" modulate="true"/> <sizebasedtriggeringpolicy size="50 mb"/>\ </policies> <defaultrolloverstrategy max="30"> <delete basepath="${logpath}/warn" maxdepth="1"> <iffilename glob="erp_warn_*.log"/> <iflastmodified age="15d"/> </delete> </defaultrolloverstrategy> </rollingfile> <rollingfile name="error" filename="${logpath}/error/erp_error.log" filepattern="${logpath}/error/erp_error_%d{yyyy-mm-dd}-%i.log"> <filters> <thresholdfilter level="fatal" onmatch="deny" onmismatch="neutral"/> <thresholdfilter level="error" onmatch="accept" onmismatch="deny"/> </filters> <patternlayout pattern="[%d][%-5p][%t] %m (%f:%l)%n"/> <policies> <timebasedtriggeringpolicy interval="24" modulate="true"/> <!-- 每个文件最大50m --> <sizebasedtriggeringpolicy size="50 mb"/>\ </policies> <defaultrolloverstrategy max="30"> <delete basepath="${logpath}/error" maxdepth="1"> <iffilename glob="erp_error_*.log"/> <!-- 设置最大保存时间为15天--> <iflastmodified age="15d"/> </delete> </defaultrolloverstrategy> </rollingfile> </appenders> <!--切换输出级别--> <loggers> <root level="info"> <appenderref ref="console"/> <appenderref ref="debug"/> <appenderref ref="info"/> <appenderref ref="warn"/> <appenderref ref="error"/> </root> </loggers> </configuration>
配置文件中增加配置:
#################### 7 log4j2 ################### logging.config=classpath:log4j2-dev.xml logging.level.org.springframework=info
4、使用
private static final logger logger = loggerfactory.getlogger(usercontroller.class); logger.info("未知异常!原因是:info"); logger.error("未知异常!原因是:error"); logger.warn("未知异常!原因是:warn");
简单用法,完毕~
微服务中,服务众多,分布在各个服务器中,我们一般不这样使用,我们一般使用elk来对日志进行统一收集和分析处理,elk后面再说