博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Common.Logging源码解析一
阅读量:6238 次
发布时间:2019-06-22

本文共 938 字,大约阅读时间需要 3 分钟。

Common.Logging是Apache下的一个开源日志接口组件,主要用于切换不同的日志库,因为当前流行的日志库有很多向log4j、log4net(log4j的.net版本)等等,所以为了能灵活的切换不同的日志组件以适应不同的系统(在系统的迭代过程中),所以设计了Common.Logging这个组件,下面废话不多说开始解析这个组件。

1、架构分析

首先大致浏览了下这个组件的架构

Common.Logging.Core

Common.Logging

观察文件类型发现以下两点:

(1)、整个组件采用面向接口编程

(2)、抽象工厂,为了解耦必然会采用工厂,通过工厂返回接口(当然这是次要的原因,主要的还是所有的不同的日志实例是相关或者相互依赖的对象)

(3)、必然有一个Manager作为主接口

(2)、(3)点如果不明白请参考

 

 

2、(LogManager)主接口分析

所谓主接口,就是客户端通过这个类操作日志实例,所以这个类就肩负了所有的初始化工作,下面开始分析LogManager做了哪些初始化工作,以及大致的顺序是怎么样的?

(1)、初始化配置文件阅读器

通过静态构造函数初始化配置文件阅读器实例,关于为什么要用静态构造函数,主要是为了解决多线程的问题,因为web应用程序是多线程的所以通过静态构造函数能解决多线程的问题,编译器会给它加锁。

DefalutConfigurationReader.cs     --这个类默认采用的是去读Web.config文件的方法来读取日志以及日志接口的配置

当编译器执行ConfigurationManager.GetSection()方法时,会触发ConfigurationSectionHandler类的

这个方法回去读取配置文件从而生成LogSetting实例。

 

 ok,到这一步,就通过构造函数设置完全局的配置文件阅读器实例,下面通过

就能调用配置文件阅读器实例了,这个实例并不包含配置文件的信息,只是存有如何读取配置文件的方法

 

(2)、生成日志实例工厂类

通过这个属性来创建日志实例工厂类

 

(3)、开发接口给外部方法

通过这三个方法就可以通过日志实例工厂类来获取对应的日志实例!

ok,整个(LogManager)主接口分析完毕!

 

转载地址:http://abzia.baihongyu.com/

你可能感兴趣的文章
PHP正则表达式详解(三)
查看>>
linux 内核 2.5-4.7 版本change
查看>>
java的ArrayList使用方法
查看>>
十招让Ubuntu 16.04用起来更得心应手
查看>>
awk笔记1
查看>>
Maven for Eclipse 第三章 ——创建和导入 Maven 项目
查看>>
js jquery中 的数据类型
查看>>
DenyHosts安装及配置
查看>>
表单多文件上传样式美化 && 支持选中文件后删除相关项
查看>>
利用Axis2默认口令安全漏洞可入侵WebService网站
查看>>
java-----基本数据类型包装类
查看>>
MD5 SHA-1 示例
查看>>
【WPF】退出应用时的提示弹窗
查看>>
Node.js - 断言
查看>>
缓存穿透,缓存雪崩,热点key及解决办法
查看>>
Nginx配置直接php
查看>>
android样式开发
查看>>
radio选择事件 onchange事件 onclick事件
查看>>
很清晰的解读i2c协议【转】
查看>>
荆慕瑶
查看>>