slf4j的介绍与使用
什么是slf4j
全称: Simple Logging Facade for Java (SLF4J)
(日志框架的门面模式,可以作为当下流程的日志框架的一些接口规范吧。) 一种抽象
当下的日志框架有 log4j, log4j2, logback, Java util logging 是这么这种
commons logging(这是apache的门面框架, 和 slf4j 是类似的,所以有了 commons logging 为什么还要出来 slf4j呢。。(因为对Commons Logging的接口不满意,有人就搞了SLF4J。因为对Log4j的性能不满意,有人就搞了Logback。——大概是这么个意思吧)
ok
emmm,
怎么用呢,
slf4j 与 logback的使用
先把 slf4j 的依赖引入进来
一个完整的pom如下:
<!-- 因为 logback已经集成了 slf4j了,所以这个引用是可以免掉的 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
</dependency>
<!-- 嗯,就是这一个依赖可以拿掉, 以上 -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
- 呃,这儿要说明一下的是,logback-classic其实已经内置支持了 org.slf4j, 所以这儿的引用不用引入 org.slf4j 也是可以的
- 然后,这儿貌似还有版本的相关性,可以尝试,当logback版本写到 1.4.1 的时候,日志框架是不生效的,就会报错,如下
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
** 就这两个地方略略要说明一下**
其它的没什么了。
关于 logback.xml
当然这个也很重要,
这儿只先记录一个模板,做一下示例,琢磨一下。(貌似还比较多的参数,要琢磨一下)
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
<charset>utf-8</charset>
</encoder>
<file>log/output.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
<fileNamePattern>log/output.log.%i</fileNamePattern>
</rollingPolicy>
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<MaxFileSize>1MB</MaxFileSize>
</triggeringPolicy>
</appender>
<root level="INFO">
<appender-ref ref="CONSOLE" />
<appender-ref ref="FILE" />
</root>
</configuration>
slf4j 与 log4j2 的使用
嗯,这个在使用上差不太多
pom.xml 依赖一下
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.19.0</version>
</dependency>
这个依赖也包括了 log4j + slf4j的了,所以一个包也就够了,
其它的大概同理。