详解SLF4J

    xiaoxiao2022-07-12  214

    文章目录

    一)、简单回顾门面模式二)、我们为什么要使用SLF4J?三)、SLF4J各部件总结

    一)、简单回顾门面模式

    slf4j是门面模式的典型应用,先简单回顾一下门面模式 门面模式,其核心为外部与一个子系统的通信必须通过一个统一的外观对象进行,使得子系统更易于使用。 门面模式的核心为Facade(即门面对象),门面对象核心为几个点: 1. 知道所有子角色的功能和责任 2. 将客户端发来的请求委派到子系统中,没有实际业务逻辑 3. 不参与子系统内业务逻辑的实现

    二)、我们为什么要使用SLF4J?

    引入适配层,让其决定使用哪种日志系统,调用端仅关心打印日志,而无需关注如何打印日志

    slf4j只做两件事情:[提供日志接口][提供获取具体日志对象的方法]

    slf4j-simple、logback都是slf4j的具体实现,log4j并不直接实现slf4j,但是有专门的桥接层slf4j-log4j12来实现slf4j。

    slf4j不提供日志的具体实现,只有slf4j而没有具体实现是无法打印日志的

    所有slf4j的实现,在提供的jar包路径下,一定是有”org/slf4j/impl/StaticLoggerBinder.class”存在的

    我们自己的系统中使用了logback这个日志系统 我们的系统使用了A.jar,A.jar中使用的日志系统为log4j 我们的系统又使用了B.jar,B.jar中使用的日志系统为slf4j-simple 这样,我们的系统就不得不同时支持并维护logback、log4j、slf4j-simple三种日志框架,非常不便。 解决这个问题的方式就是引入一个适配层,由适配层决定使用哪一种日志系统,而调用端只需要做的事情就是打印日志而不需要关心如何打印日志,slf4j或者commons-logging就是这种适配层。

    三)、SLF4J各部件总结

    名称描述相关jar包门面slf4j API接口slf4j-api.jar适配器将原日志输出无缝转移到slf4jjcl-over-slf4j,log4j-over-slf4j,jul-over-slf4j桥接器用于slf4j连接对应日志实现slf4j-log4j12,log4j-slf4j-impl,logback-classic,slf4j-jdk14,slf4j-jcl具体实现日志的具体实现log4j,log4j2,logback,jul
    最新回复(0)