slf4j集成log4j2处理日志

时间:2022-01-26 17:57:13

slf4j统一了日志的接口,通过桥接的方式,它可以集成不同的日志实现框架,如log4j,log4j2,common logging等。

这里记录下slf4j集成log4j2的maven依赖配置以及log4j2的简单配置示例。

maven添加slf4j以及log4j2相关依赖

<!-- 首先引入slf4j的核心包 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
</dependency>
<!-- 2.然后引入slf4j对应log4j2的中间件 -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.10.0</version>
</dependency>
<!-- 3.其次就需要引入log4j2包 -->
<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.10.0</version>
</dependency>

引入这三个jar包就可以了,其中:

  • slf4j-api:定义了slf4j统一的日志接口
  • log4j-slf4j-impl:slf4j桥接log4j的实现
  • log4j-core:log4j的核心jar包

log4j2的配置

完成了依赖的引入后,添加一个log4j2.xml作为日志的配置就可以了。log4j2.xml示例如下:

<?xml version="1.0" encoding="utf-8" ?>
<configuration status="OFF">
<appenders>
<!--输出到控制台-->
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{YYYY-MM-dd HH:mm:ss} [%logger{36}:%L] %-5level - %msg%n"/>
<!--<ThreSholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>-->
</Console>
<!--输出到日志文件中-->
<RollingFile name="InfoLog" fileName="/home/pigpigautumn/CODE/infoLog.log"
filePattern="${sys:user.home}/logs/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log">
<ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout pattern="%d{YYYY-MM-dd HH:mm:ss} [%logger{36}:%L] %-5level - %msg%n"/>
<Policies>
<SizeBasedTriggeringPolicy size="50MB"/>
</Policies>
</RollingFile>
<!--输出到错误日志文件中-->
<!--<RollingFile name="ErrorLog" fileName="/home/pigpigautumn/CODE/errorLog.log"-->
<!--filePattern="${sys:user.home}/logs/$${date:yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log">-->
<!--<ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>-->
<!--<PatternLayout pattern="%d{YYYY-MM-dd HH:mm:ss} [%logger{36}:%L] %-5level - %msg%n"/>-->
<!--<Policies>-->
<!--<SizeBasedTriggeringPolicy size="50MB"/>-->
<!--</Policies>-->
<!--</RollingFile>-->
</appenders>
<loggers>
<!--使appender生效-->
<root level="info">
<appender-ref ref="Console"/>
<!--<appender-ref ref="InfoLog"/>-->
<!--<appender-ref ref="ErrorLog"/>-->
</root>
</loggers>
</configuration>

简单说明:

  • fileName: 输出的日志文件的文件名
  • fileParten: 新建的日志文件的命名格式
  • ThresholdFilter: 只有输出级别大于给定的级别的日志信息才会输出到文件中
  • PartenLayout: 日志信息的格式

将appender添加loggers的root节点中就会生效了