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

wordpress站群功能12380网站建设情况说明

wordpress站群功能,12380网站建设情况说明,猪八戒做的网站怎么样,w网站开发文献目录 (一)入口:slf4j选择日志框架 (二)日志框架初始化 (1)logback的3种配置方式 a、BasicConfigurator默认配置 b、SPI方式配置的Configurator实现类 c、通过配置文件初始化 (2)xml配置文件初始化 (三)Logger的创建 (四)打印日志 本文源码基于:logback版…

目录

(一)入口:slf4j选择日志框架

(二)日志框架初始化

(1)logback的3种配置方式

a、BasicConfigurator默认配置

b、SPI方式配置的Configurator实现类

c、通过配置文件初始化

(2)xml配置文件初始化

(三)Logger的创建

(四)打印日志


本文源码基于:logback版本:1.2.11

在我们使用logback日志框架时,通常都会通过配置logback.xml定制化我们的日志需求。但你是否对loback日志如何加载配置感到好奇?如果没有logback.xml,logback的默认配置又是什么样的?配置文件中定义的appender和logger又是什么关系呢?在这一篇章我们会通过深入logback源码进行分析

(一)入口:slf4j选择日志框架

logback也是基于slf4j的一个日志框架实现。可以从maven的依赖中可以看到logback-classic依赖了slf4j-api。

 所以我们使用logback日志也是使用slf4j的接口:

private static final Logger logger = LoggerFactory.getLogger(LogTest.class);

而日志的配置加载就在首次调用LoggerFactory.getLogger时进行,具体是在LoggerFactory.getLogger-》getILoggerFactory():获取LoggerFactory时进行初始化,可以看到一个如下的performInitialization()方法。从名字可以看出这个方法就是去执行初始化的,而且使用状态位保证只初始化一次

我们接着看performInitialization方法中的bind方法:

我们知道slf4j只是定义了日志的接口,是一个日志接口协议。它将具体的日志框架实现交给各个日志框架,比如log4j2、logback等主流日志框架。这样在使用的时候,我们都是统一使用slf4j的接口,如果我们需要替换日志框架,那么只需要切换依赖,以及加上对应日志框架的配置日志就行。而之所以切换如此丝滑,就在于slf4j内部实现了日志框架实现的自动发现,即上图标红位置。

它的自动发现也很简单,只是去查找org/slf4j/impl/StaticLoggerBinder.class这个类,这个就是slf4j和具体实现框架的一个约定。如果我们想自己实现一个基于slf4j的日志框架实现,那么首先我们就得提供这么一个静态日志绑定类。

上面只是发现静态日志绑定类,如果有多个(可能同时引入了多个slf4的日志实现框架),那么会输出错误日志到控制台。并没有实际发生任何绑定动作。

实际的绑定动作是执行StaticLoggerBinder.getSingleton();

这里哪个日志框架的StaticLoggerBinder类被调用,就实际用哪个日志框架实现。

(二)日志框架初始化

上面已经讲了slf4j如何选择日志框架,最终取决于StaticLoggerBinder是哪个日志框架,这也是logback 初始化的入。接下来讲讲logback实际的初始化。

StaticLoggerBinder将绑定ILoggerFactory,使用单例模式,通过StaticLoggerBinder.getSingleton().getLoggerFactory()获取ILoggerFactory对象。它的初始化是在静态代码块中调用单例的初始化方法:SINGLETON.init();

它初始化了一个ContextInitializer,并传入StaticLoggerBinder中的默认LoggerContext,所有的初始化配置都是LoggerContext管理,实际上getLoggerFactory也是返回的此对象,所以它实际也是logger的工厂类。之后调用autoConfig,进行配置。我们重点看一下autoConfig:

(1)logback的3种配置方式

从上述代码可以看到3种配置方式的选择顺序:一个是通过获取配置文件,如果没有配置文件,那么就尝试加载SPI方式配置的Configurator实现类。如果也没有,那么会使用默认BasicConfigurator。三种配置都有两个关键步骤:

configurator.setContext(loggerContext);
configurator.doConfigure(loggerContext);

首先设置日志上下文,因为所有的配置都是围绕上下文的,所以它是配置器不可或缺的。第二步就是调用doConfigure,执行上下文执行实际的配置。

下面我们从简单到复杂一一介绍:

a、BasicConfigurator默认配置

默认配置很简单:

将ConsoleAppender附加到root logger,ConsoleAppender的layout设置为TTLLLayout,它等同于%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"。所以它等同于使用如下配置文件:

<configuration><!-- Appenders --><appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern></encoder></appender><!-- Root Logger --><root><appender-ref ref="CONSOLE"/></root>
</configuration>

日志级别没有指定,默认是debug级别

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

相关文章:

  • 企业宣传网站模板下载58同城做网站怎么做
  • 怎么样建网站淘宝店铺首页设计
  • 怎么查看网站虚拟空间安徽省住房和建设厅门户网站
  • 德清县住房和城乡建设局网站国外wordpress电影模板
  • 做优惠券网站wordpress分类目录和标签的作用
  • wordpress教育网站wordpress国内分享插件
  • 保亭网站建设学广告设计难不难
  • 哪个网站可以自己做名片网站制作风格
  • 南京做网站联系南京乐识启用wordpress rest api
  • 做的好的ppt下载网站办公室装修风格图
  • 虚拟主机 发布网站win10虚拟机做网站
  • 网站开发发展前景深圳做微信网站设计
  • 政和网站建设wzjseo网站开发需要有登陆界面的网站
  • 高级网站开发工程师工资网站标准宽度
  • 江苏建设网站首页wordpress 主题制作 视频教程
  • 中国在菲律宾做网站自己做网站原始代码
  • 石家庄网站推广优化接活做图网站
  • 工业园区网站建设济南建设信用网
  • 网站抓取诊断国内做企业英文网站用什么cms
  • 网站计数器phpwordpress4.7.1漏洞
  • 天津市建设工程信息交易网seo推广公司网站模板
  • 取消网站备案wordpress手写seo代码
  • 容桂低价网站建设wordpress 公众号采集器
  • 建设旅游网站的工作方案微信公众号制作方法
  • 网站建设 部署与发布题库wordpress分享到微博才能看到
  • 管理员修改网站的参数会对网站的搜效果产生什么影响?jsp网站开发小程序
  • 百度网站公司信息推广怎么做公众号开发者权限怎么开
  • 扬中网站哪家做的好舞钢市城乡建设局网站
  • 西安学校网站制作网站开发技术发展趋势
  • 免费空间 上传网站网站建设搭建公司