一、什么是日志

 

        日志文件是用于记录系统操作事件的文件集合,可分为事件日志和消息日志(网上的解释)。

二、使用日志的好处

1、可以异步打印数据
2、可以追踪项目运行
3、可以记录错误日志
4、可以日志动态归档
5、可以打印信息的动态的关闭
6、可以通过第三方提供插件还能将微服务日志直接记录到 ELK中

三、常见的日志框架 

JUL:(Java util logging)

JCL:Jakatra  commons logging (Spring框架的内部默认使用)

JBOSS-Logging:这个是为了特定的框架编写的日志框架

log4j、logback、SLF4J、log4j2

我们以后在开发中经常选用的一个日志组合是 SLF4J(规范)+Logback(实现产品)。

四、SLF4J的基本使用

        1、创建maven项目

java编写日志 日志 java_java编写日志

                 2.写测试代码(如果不会写的话,可以借鉴官网文档)

                https://www.slf4j.org/manual.html

 

java编写日志 日志 java_java编写日志_02

        

java编写日志 日志 java_jvm_03

public class T0 {

    public static void main(String[] args) {
        Logger logger = LoggerFactory.getLogger(T0.class);

        logger.trace("---------Trace----------");
        logger.debug("-----------debug--------");
        logger.info("-----------info----------");
        logger.warn("-----------warn----------");
        logger.error("-----------error----------");
    }
}

                3.导包


<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>2.0.0</version> </dependency>

                 那这样的运行结果就是

java编写日志 日志 java_java_04

                 上面已近说了,SLF4J是个规范,相对于一个接口,不可能直接面向接口编程,官网有个图片就解释了,光有SLF4J是没用的,无法打印

java编写日志 日志 java_开发语言_05

 五、SLF4J整合logback

java编写日志 日志 java_java编写日志_06

                         从官网提供的图片中就可以知道整合logback只需要再导入需要的两个包就行。

<dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.3.0</version>
        </dependency>

        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-core</artifactId>
            <version>1.3.0</version>
        </dependency>

                效果 :那为什么打印四句呢?

java编写日志 日志 java_jvm_07

注意:在日志中一共有 5个级别 trace < debug < info < warn < error

        默认是打印比trace级别高的内容。

        1.那么他为什么要设置多种级别的关系呢?
          因为如果当前的日志级别设置的是 debug的话,那么打印的时候 只打印 >=info级别的所有日志,说白了就是控制日志哪些需要输出哪些不需要输出。
      
         2.为什么我导包就可以完成日志的打印 ?

                因为logback提供了一个类直接实现了SLF4J接口,从官方给的解释就可也看出。


 

java编写日志 日志 java_jvm_08

java编写日志 日志 java_1024程序员节_09

六、SLF4J整合reload4j、logging

        以reload4j为例(reload4j没有实现SLF4J,所以需要一个中间层去起到承上启下的作用)

java编写日志 日志 java_java编写日志_10

java编写日志 日志 java_java编写日志_11

 六、SLF4J整合simple、no-operation

java编写日志 日志 java_开发语言_12

                以上只不过是自己对日志的理解,如果知识点有问题,请指出。