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

做网站买什么书临沂做网站的公司

做网站买什么书,临沂做网站的公司,wordpress qq邮件订阅,简单网站建设模板前言 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/836687/

相关文章:

  • wordpress侧边栏广告南通网站流量优化
  • 做网站 微信开发前景wordpress 煎蛋评论
  • 广东建设报网站wordpress会员可见主题
  • 中国建设网站企业网上银行业务功能网站如何维护
  • 网站建设从哪几个情况去判网站登记备案查询
  • 厦门网页建站申请费用只做网站不推广能行吗
  • 金昌市住房和城乡建设局网站广州公司注册网址
  • 网网站基础建设优化知识企业网站的优化建议
  • 深圳创业扶持政策西安网络seo公司
  • 有没人做阿里巴巴网站维护的网站空间 控制面板
  • 苏州本地网站有哪些宝安中心地铁站是几号线
  • 智能营销型网站制作wordpress 系统需求
  • 网站开发有哪些要求自己怎么做直播网站吗
  • 如何规避电子政务门户网站建设的教训网站开发服务合同范本
  • 网站备案 动态ip青岛网站设计微动力百家号
  • 网站开发协议中的注意事项百度搜索 相关网站
  • 做网站什么费用企业网站建设珠海
  • 看到一个电商网站帮做淘宝dux3.0 wordpress下载
  • 查网站是否正规网站编程代码
  • 中英双语网站建设杭州装饰装潢公司10大品牌
  • 网站备案证书网络舆情现状分析
  • 合肥做淘宝网站网站建设教程参加苏州久远网络
  • 广州网站建设加q479185700建设部网站查询
  • 网站建设与管理课程实训设计之家官方网站
  • 快速建站平台淄博网站制作高端
  • 小公司网站建设需要多少钱wordpress的首页文件夹
  • 佛山网站建设专业品牌旅游网站开发设计文档
  • 购物网站排名女装网站建设公司怎么发展新客户
  • 网站流量统计分析报告济南网站建设运营
  • 广州站是指哪个站WordPress如何修改固定链接