Java日志系统框架的设计与实现(第2页)
本文共计4857个字,预计阅读时长17分钟。【 字体:大 中 小 】
2.1系统架构
日志系统框架可以分为日志记录模块和日志输出模块两大部分。日志记录模块负责创建和管理日志记录器(Logger),每一个Logger对象负责按照不同的级别(LoggerLevel)接收各种记录了日志信息的日志对象(LogItem),Logger对象首先获取所有需要记录的日志,并且同步地将日志分派给日志输出模块。日志输出模块则负责日志输出器(Appender)的创建和管理,以及日志的输出。系统中允许有多个不同的日志输出器,日志输出器负责将日志记录到存储介质当中。
日志记录器Logger是整个日志系统框架的用户使用接口,程序员可以通过该接口记录日志,为了实现对日志进行分类,系统设计允许存在多个Logger对象,每一个Logger负责一类日志的记录,Logger类同时实现了对其对象本身的管理。LoggerLevel类定义了整个日志系统的级别,在客户端创建和发送日志时,这些级别会被使用到。Logger对象在接收到客户端创建和发送的日志消息时,同时将该日志消息包装成日志系统内部所使用的日志对象LogItem,日志对象除了发送端所发送的消息以外,还会包装诸如发送端类名、发送事件、发送方法名、发送行号等等。这些额外的消息对于系统的跟踪和调试都非常有价值。包装好的LogItem最终被发送给输出器,由这些输出器负责将日志信息写入最终媒介,输出器的类型和个数均不固定,所有的输出器通过AppenderManager进行管理,通常通过配置文件即可方便扩展出多个输出器。
2.2日志记录部分的设计
如前文所述,日志记录部分负责接收日志系统客户端发送来的日志消息、日志对象的管理等工作。下面详细描述了日志记录部分的设计要点:
1.日志记录器的管理
系统通过保持多个Logger对象的.方式来进行日志记录的分类。每一个Logger对象代表一类日志分类。因此,Logger对象的名称属性是其唯一标识,通过名称属性获取一个Logger对象:
1.LoggerLoggerlogger=Logger.getLogger(“LoggerName”);
一般的,使用类名来作为日志记录器的名称,这样做的好处在于能够尽量减少日志记录器命名之间的冲突(因为Java类使用包名),同时能够将日志记录分类得尽可能的精细。因此,假定有一UserManager类需要使用日志服务,则更一般的使用方式为:
2.LoggerLoggerlogger=Logger.getLogger(UserManager.class);
2.日志分级的实现
按照日志目的不同,将日志的级别由低到高分成五个级别:
◆DEBUG-表示输出的日志为一个调试信息;
◆INFO-表示输出的日志是一个系统提示;
◆WARN-表示输出的日志是一个警告信息;
◆ERROR-表示输出的日志是一个系统错误;
◆FATAL-表示输出的日志是一个导致系统崩溃严重错误。
这些日志级别定义在LoggerLevel接口中,被日志记录器Logger在内部使用。而对于日志系统客户端则可使用Logger类接口对直接调用并输出这些级别的日志,Logger的这些接口描述如下:
3.publicvoiddebug(Stringmsg);//输出调试信息
4.publicvoidinfo(Stringmsg);//输出系统提示
5.publicvoidwarn(Stringmsg);//输出警告信息
6.publicvoidfatal(Stringmsg);//输出系统错误
7.publicvoiderror(Stringmsg);//输出严重错误
通过对Logger对象上这些接口的调用,直接为日志信息赋予了级别属性,这样为后继的按照不同级别进行输出的工作奠定了基础。
3.日志对象信息的获取
日志对象上包含了一条日志所具备的所有信息。通常这些信息包括:输出日志的时间、Java类、类成员方法、所在行号、日志体、日志级别等等。在JDK1.4中可以通过在方法中抛出并且捕获住一个异常,则在捕捉到的异常对象中已经由JVM自动填充好了系统调用的堆栈,在JDK1.4中则可以使用java.lang.StackTraceElement获取到每一个堆栈项的基本信息,通过对日志客户端输出日志方法调用层数的推算,则可以比较容易的获取到StackTraceElement对象,从而获取到输出日志时的Java类、类成员方法、所在行号等信息。在JDK1.3或者更早的版本中,相应的工作则必须通过将异常的堆栈信息输出到字符串中,并分析该字符串格式得到。
2.3日志输出部分的设计
日志输出部分的设计具有一定的难度,在本文设计的日志系统中,日志的输出、多线程的支持、日志系统的扩展性、日志系统的效率等问题都交由日志输出部分进行管理。


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