Java日志系统框架的设计与实现(第3页)
本文共计4857个字,预计阅读时长17分钟。【 字体:大 中 小 】
1.日志输出器的继承结构
在日志的输出部分采用了二层结构,即定义了一个抽象的日志输出器(AbstractLoggerAppender),然后从该抽象类继承出实际的日志输出器。AbstractLoggerAppender定义了一系列的对日志进行过滤的方法,而具体输出到存储媒介的方法则是一个抽象方法,由子类实现。在系统中默认实现了控制台输出器和文件输出器两种,其中控制台输出器的实现颇为简单。
2.文件输出器的内部实现
在日志记录部分的实现中,并没有考虑多线程、高效率等问题,因此文件输出器必须考虑这些问题的处理。在文件输出器内部使用java.lang.Vector定义了一个线程安全的高速缓冲,所有通过日志记录部分分派到文件输出器的日志被直接放置到该高速缓冲当中。同时在文件输出器内部定义一个工作线程,负责定期将高速缓冲中的内容保存到文件,在保存的过程中同时可以进行日志文件的备份等工作。由于采用了高速缓冲的结构,很显然日志客户端的调用已经不再是一个同步调用,从而不再会需要等到文件操作后才返回,提高的系统调用的速度。该原理如图3所示:
2.4设计难点
通过上述设计,一个具有良好扩展能力的高性能日志系统框架就已经具有了一定的雏形。在设计过程中几个难点问题需要进一步反思。
一、是否整个系统应当采用完全异步的结构,通过类似于消息机制的方式来进行由日志客户端发送日志给日志系统。这种方式可以作为日志系统框架另一种运行方式,在后继设计中加以考虑。
二、在文件输出器中可以看到,目前虽然可以扩展多个日志输出器,但是目前提供的抽象类中仅仅提供了对日志的过滤机制,而没有提供的缓存机制,目前的缓存机制被放在文件输出器中实现,因此在未来的进一步设计中,可以将文件输出器中的缓存机制上移到抽象类当中。
2.5设计模式
在设计过程中我们特别注意使用了数个经典的设计模式。如:Logger对象的创建使用了工厂方法模式(FactoryMethod)、由AbstractLoggerAppender和ConsoleAppender以及FileAppender构成了策略模式(Strategy),除此以外,还大量使用了单例模式(Singleton)。在设计中适当运用设计模式能够加快设计进度、提高设计质量。
3.总结
本文探讨了日志系统的基本特性、实现日志系统的意义、方法和内部结构,并且给出了一种基于Java平台的日志系统的详细设计。同时也指出日志系统会向服务化、异步化的方向发展。作为一种方便的跟踪调试、数据恢复工具,应当提倡在适当的环境下对日志系统的使用。


浅谈初中音乐教育对学生思想品德教育的作用
如何合理安排技校学生的一堂课的教育理论论文
语文信息化教学能力提升措施探讨论文
信息技术在职业教育中的作用
浅谈网站推广的作用
浅谈游戏在幼儿教育中的作用(精选12篇)
浅谈教育技术对现代远程教育的作用
浅谈成人教育的作用
下运带式输送机的制动问题
电力信息化应用中产生的问题
知识管理与高校图书馆管理MPA论文范文
分析国际市场下的国际运输
事业单位预算绩效管理实践策略
服务预售及其实施策略探究
BSC下的高校绩效管理研究
民族音乐在音乐艺术中的作用
语言文学毕业论文-秘书的说话艺术
英语文学在英语教学中的应用
莱辛文学作品中的象征符号文学论文
浅谈基于翻转课堂模式的语文教学论文