zoukankan      html  css  js  c++  java
  • Common.Logging源码解析一

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

    1、架构分析

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

    Common.Logging.Core

    Common.Logging

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

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

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

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

    (2)、(3)点如果不明白请参考抽象工厂(AbstractFactory)模式-创建型模式

    2、(LogManager)主接口分析

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

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

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

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

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

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

     

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

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

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

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

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

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

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

  • 相关阅读:
    iOS崩溃报告获取一
    GCDTimer
    Runtime
    Socket
    冒泡排序笔记
    学习java虚拟机笔记
    ftp发送文件包括中文名
    java email
    批量数据插入高效 转发
    读取本地硬盘文件,快速扫描插入 数据库
  • 原文地址:https://www.cnblogs.com/GreenLeaves/p/6956981.html
Copyright © 2011-2022 走看看