一种日志服务处理方法及装置的制作方法

文档序号:7870705阅读:184来源:国知局
专利名称:一种日志服务处理方法及装置的制作方法
技术领域
本发明涉及日志服务技术领域,尤其涉及一种日志服务处理方法及装置。
背景技术
OSGi (公共服务平台,open Service Gateway Initiative)是一个基于 Java 的服务规范,它是为那些需要长时间运行,动态更新并且对运行环境的影响尽可能小的系统制定的。并且,OSGi向Java提供服务,这些服务使Java成为软件集成和软件开发的首选环境。其中,OSGi联盟已经开发了例如日志、安全等很多公共功能的标准组件接口。目前的日志服务只有SLF4J是能够运行到OSGi中的日志插件。基于OSGi的Java应用程序能够应用该日志服务。而常见的另外一些日志服务如java.util, logging、simpleLogger, log4j等却不能运行到OSGi中,所以也就不能被基于OSGi的Java应用程序应用。因此,急需一种日志服务处理方法,将不基于OSGi的日志服务转换为基于OSGi的日志服务,进一步使基于OSGi的Java应用程序能够通过一种通用的日志接口调用转换后的日志服务。

发明内容
为解决上述技术问题,本申请实施例提供一种日志服务处理方法,以达到集成多种类型的日志服务的目的,技术方案如下:一种日志服务处理方法,包括:在组件启动后,传递所述组件的上下文对象到非公共服务平台OSGi类型日志的工厂;保存所述组件的上下文对象到所述非OSGi类型日志的工厂;判断所述非OSGi类型日志的工厂对应的日志服务是否已注册为OSGi类型日志服务;在所述非OSGi类型日志的工厂对应的日志服务已注册的情况下,返回所述OSGi类型日志服务;在所述非OSGi类型日志的工厂对应的日志服务未注册的情况下,将所述日志服务注册为OSGi类型日志服务。优选的,判断所述非OSGi类型日志的工厂对应的日志服务是否已注册为OSGi类型日志服务包括:根据日志读取服务接口 LogReaderService判断所述非OSGi类型日志的工厂对应的日志服务是否已注册为OSGi类型日志服务;所述日志读取服务接口 LogReaderServic根据日志的类型和版本号判断所述非OSGi类型日志的工厂对应的日志服务是否已注册为OSGi类型日志服务。优选的,在所述非OSGi类型日志的工厂对应的日志服务未注册的情况下,将所述日志服务注册为OSGi类型日志服务包括:
判断所述非OSGi类型日志的工厂对应的日志服务是否存在于公共服务平台OSGi中;在非OSGi类型日志的工厂对应的日志服务未存在于公共服务平台OSGi中的情况下,添加所述非OSGi类型日志的工厂对应的日志服务并将所述非OSGi类型日志的工厂对应的日志服务注册为OSGi类型日志服务;在非OSGi类型日志的工厂对应的日志服务存在于公共服务平台OSGi中的情况下,将所述非OSGi类型日志的工厂对应的日志服务注册为OSGi类型日志服务。优选的,还包括:导出所述非OSGi类型日志的工厂对应的日志服务的接口,所述接口携带有版本号。优选的,还包括:在所述非OSGi类型日志的工厂对应的日志服务注册后,在输出所述非OSGi类型日志的工厂对应的日志服务记录的日志消息时,日志监听器接口 LogListener发送日志条目接口 LogEntry类型的日志条目至日志服务接口 LogService,获取所述日志条目接口LogEntry对象对应的日志消息;还包括:在所述非OSGi类型日志的工厂对应的日志服务注册后,以纯服务的方式或者以嵌入的方式加载所述日志服务。一种日志服务处理装置,包括:传递单元,用于在组件启动后,传递所述组件的上下文对象到非公共服务平台OSGi类型日志的工厂;存储单元,用于保存传递单元传递的组件的上下文对象到所述非OSGi类型日志的工厂;第一判断单元,用于判断所述非OSGi类型日志的工厂对应的日志服务是否已注册为OSGi类型日志服务;返回单元,用于在第一判断单元的判断结果为所述非OSGi类型日志的工厂对应的日志服务已注册的情况下,返回所述OSGi类型日志服务;第一注册单元,用于在第一判断单元的判断结果为所述非OSGi类型日志的工厂对应的日志服务未注册的情况下,将所述日志服务注册为OSGi类型日志服务。优选的,第一判断单元具体用于根据日志读取服务接口 LogReaderService判断所述非OSGi类型日志的工厂对应的日志服务是否已注册为OSGi类型日志服务;第一判断单元具体用于根据日志的类型和版本号判断所述非OSGi类型日志的工厂对应的日志服务是否已注册为OSGi类型日志服务。优选的,第一注册单元包括:第二判断单元、添加单元和第二注册单元;其中,第二判断单元,用于判断所述非OSGi类型日志的工厂对应的日志服务是否存在于公共服务平台OSGi中;添加单元,用于在第二判断单元的判断结果为非OSGi类型日志的工厂对应的日志服务未存在于公共服务平台OSGi中的情况下,添加所述非OSGi类型日志的工厂对应的日志服务;第二注册单元,用于注册所述添加单元添加的非OSGi类型日志的工厂对应的日志服务或用于在第二判断单元的判断结果为非OSGi类型日志的工厂对应的日志服务存在于公共服务平台OSGi中的情况下,注册所述非OSGi类型日志的工厂对应的日志服务。优选的,还包括:导出单元,用于导出所述非OSGi类型日志的工厂对应的日志服务的接口,所述导出单元具体用于导出携带有版本号的所述非OSGi类型日志的工厂对应的日志服务的接□。优选的,还包括:处理单元,用于在所述非OSGi类型日志的工厂对应的日志服务注册后,在输出所述非OSGi类型日志的工厂对应的日志服务记录的日志消息时,日志监听器接口LogListener发送日志条目接口 LogEntry类型的日志条目至日志服务接口 LogService,获取所述日志条目接口 LogEntry对象对应的日志消息;还包括:加载单元,用于在所述非OSGi类型日志的工厂对应的日志服务注册后,以纯服务的方式或者以嵌入的方式加载所述日志服务。与现有技术相比,本申请的有益效果是:在本申请中,在OSGi中可以创建非OSGi类型的日志服务并在OSGi中注册该非OSGi类型的日志服务,将该非OSGi类型的日志服务转换为基于OSGi的日志服务,达到集成多种类型的日志服务的目的,集成多种类型日志服务后,可以满足基于OSGi的不同Java应用程序根据自己需求选择适合自己的日志服务并对其进行应用的要求。


为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本申请提供的一种日志服务处理方法的一种流程图;图2是本申请提供的一种日志服务处理方法中将未注册的日志服务注册为OSGi类型日志服务的一种流程图;图3是本申请提供的一种日志服务处理方法的另一种流程图;图4a是本申请提供的一种日志服务处理装置的一种结构示意图;图4b是本申请提供的一种日志服务处理装置中第一注册单元的具体组成的一种结构示意图;图5是本申请提供的一种日志服务处理装置的另一种结构示意图。
具体实施例方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请提供一种日志服务处理方法,首先在组件启动后,传递所述组件的上下文对象到非公共服务平台OSGi类型日志的工厂,其次保存所述组件的上下文对象到所述非OSGi类型日志的工厂,然后判断所述非OSGi类型日志的工厂对应的日志服务是否已注册为OSGi类型日志服务,在所述非OSGi类型日志的工厂对应的日志服务已注册的情况下,返回所述OSGi类型日志服务,在所述非OSGi类型日志的工厂对应的日志服务未注册的情况下,将所述日志服务注册为OSGi类型日志服务。以下将列举实施例对本申请提供的一种日志服务处理方法进行详细说明。一个实施例请参阅图1,其示出了本申请提供的一种日志服务处理方法的一种流程图,可以包括以下步骤:步骤Sll:在组件启动后,传递所述组件的上下文对象到非公共服务平台OSGi类型日志的工厂。在本实施例中,启动公共服务平台OSGi中的组件后,将公共服务平台OSGi中的组件的上下文对象传递到非公共服务平台OSGi类型日志的工厂。在接收公共服务平台OSGi中的组件的上下文对象后,非公共服务平台OSGi类型日志的工厂对应的日志服务就可以通过上下文对象注册为OSGi类型日志服务或者从OSGi类型日志服务中读取该非公共服务平台OSGi类型日志的工厂对应的日志服务。在将公共服务平台OSGi中的组件的上下文对象传递到非公共服务平台OSGi类型日志的工厂后,执行步骤S12。非公共服务平台OSGi类型日志的工厂对应的日志服务可以使用公共服务平台OSGi中的组件以实现日志服务功能。步骤S12:保存所述组件的上下文对象到所述非OSGi类型日志的工厂。在非OSGi类型日志的工厂接收到公共服务平台OSGi中的组件的上下文对象后,保存该公共服务平台OSGi中的组件的上下文对象。步骤S13:判断所述非OSGi类型日志的工厂对应的日志服务是否已注册为OSGi类型日志服务。判断非OSGi类型日志的工厂对应的日志服务是否已注册为OSGi类型日志服务原因为:基于公共服务平台OSGi的应用程序使用日志服务时,必须使用OSGi类型日志服务,即使用注册在公共服务平台OSGi中的日志服务。如果非OSGi类型日志的工厂对应的日志服务未注册在公共服务平台OSGi中,非OSGi类型日志的工厂对应的日志服务便不能使用公共服务平台OSGi提供的日志服务功能的组件,即该非OSGi类型日志的工厂对应的日志服务并不会在公共服务平台OSGi中运行。则进一步如果基于公共服务平台OSGi的应用程序使用该非OSGi类型日志的工厂对应的日志服务时,基于公共服务平台OSGi的应用程序不会得到该公共服务平台OSGi的应用程序运行过程中记录的日志。其中公共服务平台OSGi提供服务注册的功能,以实现将非OSGi类型日志的工厂对应的日志服务注册为OSGi类型日志服务。在本实施例中,判断非OSGi类型日志的工厂对应的日志服务是否已注册为OSGi类型日志服务可以根据日志读取服务接口 LogReaderService判断。其中日志读取服务接口 LogReaderService判断非OSGi类型日志的工厂对应的日志服务是否已注册为OSGi类型日志服务的具体过程为:根据日志读取服务接口 LogReaderService的名称查找日志读取
服务接口 LogReaderService对应的服务的服务引用对象;在判断该服务对象不为空时,从
非OSGi类型日志的工厂中保存的上下文对象中获取日志读取服务接口 LogReaderService
类型的对象;使用日志读取服务接口 LogReaderService定义的getlog ()检索日志读取服
务接口 LogReaderService类型的对象对应的日志条目,在检索到的日志条目中如果包括
该非OSGi类型日志的工厂对应的日志服务,则说明该非OSGi类型日志的工厂对应的日志
服务已注册,否则,说明该非OSGi类型日志的工厂对应的日志服务未注册。判断过程可以
由如下代码实现,代码为:Servic.eReferenc.eref=
权利要求
1.一种日志服务处理方法,其特征在于,包括: 在组件启动后,传递所述组件的上下文对象到非公共服务平台OSGi类型日志的工厂; 保存所述组件的上下文对象到所述非OSGi类型日志的工厂; 判断所述非OSGi类型日志的工厂对应的日志服务是否已注册为OSGi类型日志服务; 在所述非OSGi类型日志的工厂对应的日志服务已注册的情况下,返回所述OSGi类型日志服务; 在所述非OSGi类型日志的工厂对应的日志服务未注册的情况下,将所述日志服务注册为OSGi类型日志服务。
2.根据权利要求1所述的方法,其特征在于,判断所述非OSGi类型日志的工厂对应的日志服务是否已注册为OSGi类型日志服务包括: 根据日志读取服务接口 LogReaderService判断所述非OSGi类型日志的工厂对应的日志服务是否已注册为OSGi类型日志服务; 所述日志读取服务接口 LogReaderServic根据日志的类型和版本号判断所述非OSGi类型日志的工厂对应的日志服务是否已注册为OSGi类型日志服务。
3.根据权利要求1所述的方法,其特征在于,在所述非OSGi类型日志的工厂对应的日志服务未注册的情况下,将所述日志服务注册为OSGi类型日志服务包括: 判断所述非OSGi类型日志的工厂对应的日志服务是否存在于公共服务平台OSGi中; 在非OSGi类型日志 的工厂对应的日志服务未存在于公共服务平台OSGi中的情况下,添加所述非OSGi类型日志的工厂对应的日志服务并将所述非OSGi类型日志的工厂对应的日志服务注册为OSGi类型日志服务; 在非OSGi类型日志的工厂对应的日志服务存在于公共服务平台OSGi中的情况下,将所述非OSGi类型日志的工厂对应的日志服务注册为OSGi类型日志服务。
4.根据权利要求1所述的方法,其特征在于,还包括: 导出所述非OSGi类型日志的工厂对应的日志服务的接口,所述接口携带有版本号。
5.根据权利要求1所述的方法,其特征在于,还包括: 在所述非OSGi类型日志的工厂对应的日志服务注册后,在输出所述非OSGi类型日志的工厂对应的日志服务记录的日志消息时,日志监听器接口 LogListener发送日志条目接口 LogEntry类型的日志条目至日志服务接口 LogService,获取所述日志条目接口LogEntry对象对应的日志消息; 所述方法还包括:在所述非OSGi类型日志的工厂对应的日志服务注册后,以纯服务的方式或者以嵌入的方式加载所述日志服务。
6.一种日志服务处理装置,其特征在于,包括: 传递单元,用于在组件启动后,传递所述组件的上下文对象到非公共服务平台OSGi类型日志的工厂; 存储单元,用于保存传递单元传递的组件的上下文对象到所述非OSGi类型日志的工厂; 第一判断单元,用于判断所述非OSGi类型日志的工厂对应的日志服务是否已注册为OSGi类型日志服务; 返回单元,用于在第一判断单元的判断结果为所述非OSGi类型日志的工厂对应的日志服务已注册的情况下,返回所述OSGi类型日志服务; 第一注册单元,用于在第一判断单元的判断结果为所述非OSGi类型日志的工厂对应的日志服务未注册的情况下,将所述日志服务注册为OSGi类型日志服务。
7.根据权利要求6所述的装置,其特征在于,第一判断单元具体用于根据日志读取服务接口 LogReaderService判断所述非OSGi类型日志的工厂对应的日志服务是否已注册为OSGi类型日志服务; 第一判断单元具体用于根据日志的类型和版本号判断所述非OSGi类型日志的工厂对应的日志服务是否已注册为OSGi类型日志服务。
8.根据权利要求6所述的装置,其特征在于,第一注册单元包括:第二判断单元、添加单元和第二注册单元; 其中,第二判断单元,用于判断所述非OSGi类型日志的工厂对应的日志服务是否存在于公共服务平台OSGi中; 添加单元,用于在第二判断单元的判断结果为非OSGi类型日志的工厂对应的日志服务未存在于公共服务平台OSGi中的情况下,添加所述非OSGi类型日志的工厂对应的日志服务; 第二注册单元,用于注册所述添加单元添加的非OSGi类型日志的工厂对应的日志服务或用于在第二判断单元的判断结果为非OSGi类型日志的工厂对应的日志服务存在于公共服务平台OSGi中的情况下,注册所述非OSGi类型日志的工厂对应的日志服务。
9.根据权利要求6所述的装置,其特征在于,还包括: 导出单元,用于导出所述非OSGi类型日志的工厂对应的日志服务的接口,所述导出单元具体用于导出携带有版本号的所述非OSGi类型日志的工厂对应的日志服务的接口。
10.根据权利要求6所述的装置,其特征在于,还包括: 处理单元,用于在所述非OSGi类型日志的工厂对应的日志服务注册后,在输出所述非OSGi类型日志的工厂对应的日志服务记录的日志消息时,日志监听器接口 LogListener发送日志条目接口 LogEntry类型的日志条目至日志服务接口 LogService,获取所述日志条目接口 LogEntry对象对应的日志消息; 所述装置,还包括: 加载单元,用于在所述非OSGi类型日志的工厂对应的日志服务注册后, 以纯服务的方式或者以嵌入的方式加载所述日志服务。
全文摘要
本申请提供了一种日志服务处理方法,包括在组件启动后,传递所述组件的上下文对象到非公共服务平台OSGi类型日志的工厂;保存所述组件的上下文对象到所述非OSGi类型日志的工厂;判断所述非OSGi类型日志的工厂对应的日志服务是否已注册为OSGi类型日志服务;在所述非OSGi类型日志的工厂对应的日志服务已注册的情况下,返回所述OSGi类型日志服务;在所述非OSGi类型日志的工厂对应的日志服务未注册的情况下,将所述日志服务注册为OSGi类型日志服务。因此,本申请能够集成多种类型的日志服务,集成多种类型日志服务后,可以满足基于OSGi的不同Java应用程序根据自己需求选择适合自己的日志服务并对其进行应用的要求。
文档编号H04L12/24GK103095491SQ201210583988
公开日2013年5月8日 申请日期2012年12月30日 优先权日2012年12月30日
发明者张权, 刘鹏, 尚秀颖, 李峰, 张青 申请人:山东中创软件商用中间件股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1