slf4j + logback

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的了,所以一个包也就够了,
其它的大概同理。

posted @ 2022-11-30 10:00  aaacarrot  阅读(75)  评论(0编辑  收藏  举报