Category:种类
该类的创建和销毁均是交给HierarchyMaintainer来负责的,HierarchyMaintainer是单例;这种设计的好处是,由于HierarchyMaintainer是单例,在程序结束时会自动销毁,销毁时也会对它所创建的Category对象进行销毁,无需应用程序手动调用delete去销毁;HierarchyMaintainer还定义了回调函数,可以由应用程序来定义销毁的方法并注册,HierarchyMaintainer会自动调用用户自定义的销毁方法;为了支持多线程,在添加、获取以及删除appender的时候都加了锁;通过引用加入到本类中的appender,本类不拥有;而通过指针加入的,则拥有。“拥有”的appender在本类的对象销毁时被自动销毁;每一个category都对应一个名称。
Appender:日志附加的目的地
通过一个内部类AppenderMapStorage来保存appender,以及一个内部初始化类AppenderMapStorageInitializer在类中定义了内部类AppenderMapStorage的静态引用成员,在类外定义了初始化类AppenderMapStorageInitializer的静态成员在初始化AppenderMapStorage的静态引用成员时,将该成员指向一个静态的内存区域,然后通过AppenderMapStorageInitializer的静态成员的构造函数调用AppenderMapStorage的构造函数来实现AppenderMapStorage的静态引用成员指向的内存区域的初始化。以上做法的好处是:首先将Appender作为了单例,AppenderMapStorage的内存区域始终是唯一指向静态存储区的内存区域,并且Appender可以通过new关键字来创建,创建后的对象由Appender统一管理,无需应用释放。
AppendersFactory:Appender的工厂
单例,通过getInstance()得到对象registerCreator用来注册创建函数(回调机制),每个回调函数对应一个名称,用来创建不同的Appender调用create接口来创建,具体创建过程交给回调函数
转载请注明原文地址: https://www.6miu.com/read-2624687.html