栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

《第一节》项目中日志框架的正确使用方式slf4j+logback

《第一节》项目中日志框架的正确使用方式slf4j+logback

当年使用过 System.out.println("我不算日志吗") 的同学可以算算年龄了,然后就是以下这几个:

  • SLF4J
  • Logback
  • Log4J
  • jul:java.util.logging

确切的说SLF4J和另外3个有本质的区别:它是规范,不是日志组件的实现。
现在新项目基本都选择SLF4J作为日志门面,实现类使用logback

SLF4J支持的主要日志框架
  • slf4j-log4j12-${latest.stable.version}.jar 对log4j的支持,当然,正常使用还是需要添加log4j.jar。
  • slf4j-jdk14-${latest.stable.version}.jar对 java.util.logging的支持
  • logback-classic-${logback.version}.jar (依赖logback-core-${logback.version}.jar) 对logback的支持(闭着眼选择吧)
对logback的支持
  
      org.slf4j
      slf4j-api
      1.7.25
  
  
      ch.qos.logback
      logback-classic
      1.2.3
  
对log4j的支持
  
      org.slf4j
      slf4j-api
      1.7.25
  
  
      log4j
      log4j
      1.2.17
  
  
  
      org.slf4j
      slf4j-log4j12
      1.7.21
  
  • 如果只是引用slf4j,并不能实现日志输出功能,会打印一个日志:SLF4J Failed to load class "org.slf4j.impl.StaticLoggerBuilder"
  • 如果同时添加了多个实现类,slf4j会选择一个实现类作为日志的输出,并给出提醒:SLF4J Class path contains multiple SLF4J bindings。
那么slf4j是如何找到实现类的?为什么添加了依赖就可以找到?

首先要从Logger logger = LoggerFactory.getLogger(Object.class)开始分析,这句话是百年不变,也正是在getLogger这个函数内实现的对实现类的查找。

STATIC_LOGGER_BINDER_PATH的值是org/slf4j/impl/StaticLoggerBinder.class,所以这就很明确了,所有slf4j的实现,在提供的jar包路径下,一定是有"org/slf4j/impl/StaticLoggerBinder.class"存在的,如下图:

接下来

了解了背景,看下Logback的构成和使用:
聊一聊日志系统 Logback

扩展阅读

https://www.cnblogs.com/xrq730/p/8619156.html

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/663832.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号