当前位置: 首页 > news >正文

自己制作网站科技企业网站源码

自己制作网站,科技企业网站源码,网站套程序,福建省建设执业注册中心网站前言 Slf4j SLF4J,全称 Simple Logging Facade for Java,是一个用于Java编程语言的日志系统抽象层。它为多种现有日志框架(例如Log4j、java.util.logging等)提供了统一的接口, 但自身并不实现日志功能。 SLF4J 允许用户在部署时…

前言

Slf4j

SLF4J,全称 Simple Logging Facade for Java,是一个用于Java编程语言的日志系统抽象层。它为多种现有日志框架(例如Log4j、java.util.logging等)提供了统一的接口, 但自身并不实现日志功能。
SLF4J 允许用户在部署时选择适当的日志库(即日志框架),比如 Logback、Log4j 等。

Logback

Logback 是一个实现日志功能的库,它由Log4j的创建者设计。Logback被设计成Log4j的一个卓越替代品,它具有更好的性能、自动重加载配置文件、更丰富的日志格式以及内置日志归档等特点。
简单来说,SLF4J为Java提供了一个统一的日志接口,而Logback是一个具体的日志库,可以与SLF4J API结合起来使用。

注意,其它日志实现如log4j等结合slf4j的时候是需要桥接包,而logback是直接实现了slf4j。

Slf4j初始化源码分析

slf4j在代码中初始化一个Logger对象时,如下,调用LoggerFactory.getLogger()方法:

private final Logger logger = LoggerFactory.getLogger(this.getClass());

查看getLogger方法:

public static Logger getLogger(String name) {  // logback实现了slf4j的ILoggerFactory接口,关键也在于这个地方ILoggerFactory iLoggerFactory = getILoggerFactory();  return iLoggerFactory.getLogger(name);  
}

logback针对ILoggerFactory的实现类是:ch.qos.logback.classic.LoggerContext。
所以可以直接查看LoggerContext.getLogger()方法。
可以看到最终是调用到这个方法:

在这里插入图片描述

这个地方不是配方重点,这里分析下初始化的时候如何构造LoggerContext实例:

 ILoggerFactory iLoggerFactory = getILoggerFactory();  

通过追踪方法调用,可以看到最终调用的是这个bind()方法(具体调用的源码细节,可以自己点进去看一下,代码不多,不啰嗦了):

在这里插入图片描述

    private final static void bind() {try {Set<URL> staticLoggerBinderPathSet = null;// 不检查安卓系统的if (!isAndroid()) {// 这里是找到所有org/slf4j/impl/StaticLoggerBinder.class的jar路径staticLoggerBinderPathSet = findPossibleStaticLoggerBinderPathSet();// 如果项目有多个日志框架的实现,平常启动项目不是会打印一些日志:Class path contains multiple SLF4J bindings.等// 就是这这个地方打印的,日志实现冲突reportMultipleBindingAmbiguity(staticLoggerBinderPathSet);}// 每个实现slf4j的日志或者桥接包都会有这个org/slf4j/impl/StaticLoggerBinder.class类StaticLoggerBinder.getSingleton();INITIALIZATION_STATE = SUCCESSFUL_INITIALIZATION;reportActualBinding(staticLoggerBinderPathSet);} catch (NoClassDefFoundError ncde) {// 下面代码忽略了} catch (java.lang.NoSuchMethodError nsme) {} catch (Exception e) {failedBinding(e);throw new IllegalStateException("Unexpected initialization failure", e);} finally {postBindCleanUp();}}

StaticLoggerBinder.getSingleton();这个注释里说了,每个实现或者桥接包都有这个类的,比如logback:

在这里插入图片描述

这个地方也是slf4j初始化的精髓,没有这个类就抛异常了。

而关于StaticLoggerBinder的初始化,也很平常:

在这里插入图片描述

就是通过静态代码块来初始化logback了。

http://www.yayakq.cn/news/580815/

相关文章:

  • 建站之星如何建网站长宁网站推广公司
  • 网站可以做话筒台标吗合伙企业怎么注册公司
  • 自己做的电商网站要多少钱wordpress 不能拖动了
  • 推广网站大全汉堡只做网站
  • 海南的论坛网站建设网站模板中心
  • 陈光锋网站运营推广新动向专业高端企业网站建设
  • 莱芜雪野湖滑雪场seo站长查询
  • 沈阳世纪兴网站建设好看的网站建设公司
  • 深圳 seo 外贸网站建设 多语种甘肃省省建设厅网站
  • 国内优秀设计网站推荐北京网站建设建站
  • 建设网站的意义知乎sem分析
  • zencart网站建设搜索引擎提交网站
  • 手机网站模板 源码网页制作及欣赏
  • 网课网站我爱营销网
  • 官方网站开发哪家便宜html编辑器怎么用
  • 如何开发电商网站来年做那个网站能致富
  • 怎么看待网站开发网站滑块验证怎么做
  • 大气时尚的网站用dw做网站的好处
  • 用vs做网站如何连接数据库西安网络推广
  • wordpress建站平台网站建设.龙兵
  • 网站空间如何申请知更鸟wordpress主题
  • 网站建化wordpress主题名字
  • 东莞seo建站优化费用html编辑器在哪
  • 网站建设框架程序企业网站建设多少钱
  • 三星企业网站建设ppt网站建设 甘肃
  • 浙江网站设计 site用wordpress做商城
  • 用电脑建设个人网站 并用手机访问自己怎样学做网站
  • 高端大气的企业网站模板徐州做网站管理的公司
  • 网站建设邀请函学计算机出来能干什么
  • 网站单个页面紧张搜索引擎蜘蛛如何让百度搜索到自己的网站