一种日志采集方法、装置及日志服务系统的制作方法

文档序号:9524032阅读:183来源:国知局
一种日志采集方法、装置及日志服务系统的制作方法
【技术领域】
[0001]本发明涉及网络技术领域,尤其涉及一种日志采集方法、装置及日志服务系统。
【背景技术】
[0002]应用系统中,日志是不可缺少的重要组成部分,所有Java应用程序的出错信息等都应该能在日志文件中查找到,目前,绝大多数Java应用程序在运行过程中都会采用日志框架来生成各种日志文件。
[0003]但是,现有日志框架都采用jar集成的方式包含在第三方组件(如mina或netty)中,这导致Java应用程序在运行过程需要先强制性地引入第三方组件,然后在应用程序中配置相应的参数,调用第三方组件提供的应用程序编程接口(Applicat1n ProgrammingInterface, API)函数,通过查找第三方组件中的日志框架来生成日志文件,由于应用程序和日志框架时均需要引入第三方组件,比如双方都引用netty或mina等第三方组件时,因各自引用的版本不一致,易导致引用冲突。

【发明内容】

[0004]本发明的主要目的,在于提供一种日志采集方法、装置及日志服务系统,解决了现有日志采集过程中,需引入第三方组件导致引用冲突的问题。
[0005]为达到上述目的,本发明的实施例采用如下技术方案:
[0006]第一方面,本发明实施例提供一种日志米集方法,包括:
[0007]加载java应用程序的类文件;
[0008]判断所述类文件是否在日志采集的监控范围内;
[0009]若确定所述类文件在日志采集的监控范围内,则获取所述类文件的所有类方法,确定所述所有类方法中是否存在需进行日志采集的类方法;
[0010]若所述所有类方法中存在需进行日志采集的方法,则在需进行日志采集的类方法中植入日志采集代码,形成新的类文件;
[0011]加载所述新的类文件进行日志采集。
[0012]第二方面,本发明实施例提供一种日志采集装置,包括:
[0013]类加载器:用于加载java应用程序的类文件;
[0014]判断单元:用于判断所述类文件是否在日志采集的监控范围内;
[0015]解析单元:用于当所述判断单元确定所述类文件在日志采集的监控范围内时,获取所述类文件的所有类方法,确定所述所有类方法中是否存在需进行日志采集的类方法;
[0016]代码植入单元:用于当所述解析单元确定所述所有类方法中存在需进行日志采集的方法时,在需进行日志采集的类方法中植入日志采集代码,形成新的类文件;
[0017]所述类加载单元,还用于加载所述新的类文件进行日志采集。
[0018]第三方面,本发明实施例还提供一种日志服务系统,所述日志服务系统包括:如第二方面所述的日志采集装置、Kafka集群、以及日志应用装置。
[0019]所述日志采集装置,用于通过异步传输的方式将采集到的日志信息发送至Kafka集群中的消息队列中;
[0020]所述日志应用装置,用于读取所述Kafka集群消息队列中的日志消息进行消费。[0021 ] 由上可知,本发明实施例提供一种日志采集方法、装置及日志服务系统,所述日志采集方法由日志采集装置中的JVM执行,JVM先加载java应用程序的类文件,当确定所述类文件在日志采集的监控范围内,且所述类文件的所有类方法存在需进行日志采集的类方法时,将日志采集代码植入类方法中,形成新的类文件,重新加载新的类文件进行日志采集。在本发明的日志采集过程中,不需要事先引进第三组件,而是在需要进行日志采集的地方才加载日志采集代码,实现零耦合的日志采集文件的动态加载,避免了现有日志采集过程中,需引入第三方组件导致引用冲突的问题。
【附图说明】
[0022]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0023]图1为本发明实施例提供的日志服务系统原理框图;
[0024]图2为本发明实施例提供的日志采集装置的结构图;
[0025]图3为本发明实施例提供的日志采集方法的流程图;
[0026]图4为本发明实施例提供的日志采集装置10的结构图。
【具体实施方式】
[0027]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0028]首先,为了便于理解本发明所述的技术方案,对本发明中的一些重要名词进行详细解释:
[0029]宿主机(Host):作为管理层,用以完成硬件资源的管理、分配;Sjava虚拟机呈现虚拟硬件平台;实现虚拟机的调度和隔离。其中,Host可能是虚拟机监控器(VMM);虚拟硬件平台对其上运行的各个Java虚拟机提供各种硬件资源,如提供虚拟处理器(如VCPU)、虚拟内存、虚拟磁盘等等。其中,该虚拟磁盘可对应Host的一个文件或者一个逻辑块设备。Java虚拟机运行在Host为其准备的虚拟硬件平台上,Host上运行一个或多个Java虚拟机。
[0030]Java虚拟机(Java Virtual Machine,JVM):可运行java代码的虚拟计算机,只要根据JVM规格描述将解释器移植到特定的计算机上,就能保证经过编译的任何java代码能够在该系统上运行,JVM拥有自己完善的硬件架构,如处理器、堆栈、寄存器等,并且还具有相应的指令系统。
[0031]类(class)文件:java类文件,用于存储java程序运行时代码指令集的文件,可通过类装载器加载到JVM上。
[0032]类装载器:java类装载器,由于java程序包含很多的类文件,并且这些类文件不像静态的C程序一次性装载入JVM内存,它们只有在需要的时候才装载,java类装载器先从类文件中获取不依赖平台的字节码,然后将它们装载到JVM内存空间运行。
[0033]jar文件:包含多个java类文件和相关资源的同一存储库,是java程序组件分发的一种通用形式。
[0034]java虚拟机工具接口:(Java Virtual Machine Toolkit Interface,JVM TI),是监控虚拟机运行状态的接口,是JDK提供的一套用于开发JVM监控、问题定位与性能调优的通用编程接口(Applicat1n Programming Interface,API)。通过 JVM TI,我们可以开发各式各样的JVMTI Agent。这个Agent的表现形式是一个以c/c++语言编写的动态共享库(dynamic module),在java启动或运行时,可动态加载dynamic module到Java进程内,然后触发JVM源生线程Attach Listener来执行这个dynamic module的回调函数。在函数体内,你可以获取各种各样的JVM级信息,注册感兴趣的JVM事件,甚至控制JVM的行为。
[0035]需要理解的是,上述名词仅是本领域技术人员为了描述方便常用的命名,并不代表或暗示所指的系统或元件必须有此命名,因此不能理解为对本发明的限制。
[0036]通常情况下,一个完整的日志服务过程可以包括两大部分:日志生产和日志消费,其中,日志生产是指:通过对应用程序的日志采集生成相应的日志信息(如运行栈过程
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1