天天看点

Java SpringBoot 日志框架基础以及如何更换日志框架学习学习资料引用框架之间基础关系logback转log4j具体实现

学习资料引用

为什么使用 SLF4J 而不是 Log4J 来做 Java 日志

SLF4J和Logback和Log4j和Logging的区别与联系

B站大佬视频

框架之间基础关系

在搜集的资料中,比较流行的java框架抽象层有如下几种

  • JUL(java.util.logging)

    官方日志框架,spring底层默认框架

  • log4j(log for java)

    开源框架

  • SLF4J(simple logging facade for java)

    springboot底层日志默认框架

日志实现由如下几种

  • log4j
  • JUL
  • -log4j2(Apache公司所写,没有合适的适配层)
  • logback(SLF4J,log4j,logback出自一人之手,适配性是最好的)

框架实现

官方文档

Java SpringBoot 日志框架基础以及如何更换日志框架学习学习资料引用框架之间基础关系logback转log4j具体实现

在log4j和JUL出来的时候,还并没有出现SLF4J,所以中间会有一层适配层,来帮助程序调用API

调用的始终是SLF4J的方法,不过是适配层来实现SLF4J抽象层,在实现过程中,调用了实现类的API

框架切换

首先还是官方的切换框架说明文档

官方的切换框架说明文档

Java SpringBoot 日志框架基础以及如何更换日志框架学习学习资料引用框架之间基础关系logback转log4j具体实现

其他框架底层例如是JUL,会有类似适配层的.jar(这里指的就是jcl-over-sef4j.jar),他们会把JUL接口转成SLF4J的

当需要把SLF4J的实现从logback转成log4j的时候,因为会引入适配层,所以不再需要把log4j的遗留接口转换成SLF4J接口

logback转log4j具体实现

logback各方面比log4j更为强大,这里只是单纯进行练习

首先看log方便的依赖

Java SpringBoot 日志框架基础以及如何更换日志框架学习学习资料引用框架之间基础关系logback转log4j具体实现
Java SpringBoot 日志框架基础以及如何更换日志框架学习学习资料引用框架之间基础关系logback转log4j具体实现

这里可以观察到依赖关系

首先应该将logback依赖排除掉

对于log4j-to-slf4 因为我们原本准备使用log4j 这里逻辑上应该将其移除,但是转为slf4也不会对结果产生影响

最后添加适配层的依赖,并加入相应的配置文件l文件

Java SpringBoot 日志框架基础以及如何更换日志框架学习学习资料引用框架之间基础关系logback转log4j具体实现
Java SpringBoot 日志框架基础以及如何更换日志框架学习学习资料引用框架之间基础关系logback转log4j具体实现

log4j.properties

### set log levels ###
log4j.rootLogger = debug ,  stdout ,  D ,  E

### 输出到控制台 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern =  %d{ABSOLUTE} =====================%5p %c{1}:%L - %m%n
           

这里加了一串等号 为检验下面是否得到了期望效果

Java SpringBoot 日志框架基础以及如何更换日志框架学习学习资料引用框架之间基础关系logback转log4j具体实现

这样即达到了转换实现类的效果,虽然系统调用的始终是SLF4J,但是实现框架就改变了