发明内容
本申请提出了一种用于发送日志的方法、系统、装置、设备以及存储介质。
根据第一方面,本申请实施例提供了一种用于发送日志的方法,方法包括:接收业务端发送的日志报文,其中,日志报文包括依据发送内容定义的日志报文和通过拦截技术获取所需发送信息后生成的日志报文;基于接收到的日志报文,生成日志报文的消息并通过消息队列将日志报文向服务端发送;接收服务端返回的发送成功指令;查找服务端返回的发送成功标识;响应于未接收到服务端返回的发送成功指令和/或响应于未查找到服务端返回的发送成功标识,利用远程过程调用技术,将日志报文向服务端发送。
在一些实施例中,方法还包括:响应于未接收到服务端返回的发送成功指令和/或响应于未查找到服务端返回的发送成功标识,将日志报文放入线程池队列;按照预设的重复规则,通过执行日志报文对应的线程,将日志报文向服务端重复发送。
在一些实施例中,接收业务端发送的日志报文包括:按照第一时间周期接收业务端依据发送内容定义的日志报文;按照第二时间周期接收业务端通过拦截技术获取所需发送信息后生成的日志报文,其中,接收到业务端依据发送内容定义的日志报文的时间点与接收到业务端通过拦截技术获取所需发送信息后生成的日志报文的时间点不同。
在一些实施例中,通过拦截技术获取所需发送信息后生成的日志报文在业务端通过如下方式得到:利用AOP技术拦截后台系统中所需上报日志的方法,获取方法对应的参数信息,其中,方法中标注有拦截所用的所需上报日志的注释信息;对参数信息进行封装,生成相应方法的日志报文发送至日志发送器。
第二方面,本申请实施例提供了一种用于发送日志的系统,系统包括:日志发送器,其中,日志发送器用于执行上述第一方面的用于发送日志的方法。
在一些实施例中,系统还包括:业务端和服务端;业务端,用于将依据发送内容定义的日志报文发送至日志发送器,利用AOP技术拦截后台系统中所需上报日志的方法,获取方法对应的参数信息,其中,方法中标注有拦截所用的所需上报日志的注释信息,对参数信息进行封装,生成相应方法的日志报文发送至日志发送器。服务端,用于接收日志发送器发送的日志报文,返回发送成功指令和发送成功标识,对接收到的日志报文进行校验,响应于校验通过,对日志报文进行封装,生成标准格式要求的日志数据,并存储于ES数据库。
在一些实施例中,业务端还用于向服务端发送查询请求;服务端还用于接收业务端发送的查询请求,基于查询接口,向业务端反馈查询请求对应的查询结果。
第三方面,本申请实施例还提供了一种用于发送日志的装置,装置包括:接收单元,被配置成接收业务端发送的日志报文,其中,日志报文包括依据发送内容定义的日志报文和通过拦截技术获取所需发送信息后生成的日志报文;第一发送单元,被配置成基于接收到的日志报文,生成日志报文的消息并通过消息队列将日志报文向服务端发送;查询单元,被配置成接收服务端返回的发送成功指令,查找服务端返回的发送成功标识;第二发送单元,被配置成响应于未接收到服务端返回的发送成功指令和/或响应于未查找到服务端返回的发送成功标识,利用远程过程调用技术,将日志报文向服务端发送。
第四方面,本申请实施例提供了一种电子设备,包括:至少一个处理器;以及与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够实现如第一方面中任一实现方式描述的方法。
第五方面,本申请实施例提供了一种存储有计算机指令的非瞬时计算机可读存储介质,计算机指令用于使计算机执行如第一方面中任一实现方式描述的方法。
根据本申请的技术通过接收业务端发送的日志报文,其中,日志报文包括依据发送内容定义的日志报文和通过拦截技术获取所需发送信息后生成的日志报文,基于接收到的日志报文,生成日志报文的消息并通过消息队列将日志报文向服务端发送,接收服务端返回的发送成功指令,查找服务端返回的发送成功标识,响应于未接收到服务端返回的发送成功指令和/或响应于未查找到服务端返回的发送成功标识,利用远程过程调用技术,将日志报文向服务端发送,为不同获取方式得到的日志报文提供了一种可靠性更强的日志发送方法。
应当理解,本部分所描述的内容并非旨在标识本申请的实施例的关键或重要特征,也不用于限制本申请的范围。本申请的其它特征将通过以下的说明书而变得容易理解。
具体实施方式
以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
图1示出了根据本申请的用于发送日志的方法的第一实施例的示意图100。该用于发送日志的方法,包括以下步骤:
步骤101,接收业务端发送的日志报文。
在本实施例中,用于发送日志的方法的执行主体可以通过有线连接方式或者无线连接方式从其他电子设备或者本地接收日志报文,其中,日志报文包括依据发送内容定义的日志报文和通过拦截技术,利用预先定义的程序、类或方法的拦截方式,获取所需发送信息后生成的日志报文。
在实现本发明过程中,发明人发现在现有众多管理后台系统中,存在大量操作功能,例如创建、更新、删除等,这些操作功能中的绝大部分在系统中并未进行操作人员的操作记录,无法对这些操作进行查询和管理,如果系统发生了写敏感误操作,例如有人误删表中的数据,我们将无迹可寻。因此需要找到一种方便快捷的方法来对该类操作进行日志记录和统一管理。利用自动收集(即通过拦截技术,获取所需发送信息后生成的日志报文)和主动收集(即接收发送来的依据发送内容定义的日志报文)两种方式,获取不同来源的大量的操作记录是进行日志传输和管理的基础。
进一步说明,依据发送内容定义的日志报文是指业务端将要发送的内容按照定义好的对象体进行封装,生成日志报文,然后调用发送日志功能将该日志报文进行发送。通过拦截技术获取所需发送信息后生成的日志报文,例如在所需获取操作记录的程序代码中加入拦截程序代码,依据拦截得到的代码信息生成相应的日志报文,以实现主动获取日志报文。
步骤102,基于接收到的日志报文,生成日志报文的消息并通过消息队列将日志报文向服务端发送。
在本实施例中,上述执行主体可以根据接收到的日志报文,生成日志报文的消息并通过JMQ(Java Message Queue)消息队列(即消息中间件)将日志报文向服务端发送。
步骤103,接收服务端返回的发送成功指令,查找服务端返回的发送成功标识。
在本实施例中,上述执行主体实时接收服务端返回的发送成功指令,按一定周期查找服务端返回的发送成功标识。
步骤104,响应于未接收到服务端返回的发送成功指令和/或响应于未查找到服务端返回的发送成功标识,利用远程过程调用技术,将日志报文向服务端发送。
在本实施例中,当上述执行主体在一定时间周期内未接收到服务端返回的发送成功指令和/或按预设查询次数未查找到服务端返回的发送成功标识时,利用RFC(RomoteProcedure Call)远程过程调用技术,将日志报文发送给服务端。若该日志报文发送仍未成功(即仍未接收到服务端返回的发送成功指令和/或未查找到服务端返回的发送成功标识),则会向业务端发送报警信息。
继续参见图2,本实施例的用于发送日志的方法200运行于电子设备201中。电子设备201首先接收业务端发送的自定义的日志报文和通过拦截技术获取所需发送信息后生成的日志报文202,然后电子设备201基于接收到的日志报文,生成日志报文的消息并通过消息队列将日志报文向服务端发送203,接着电子设备201会接收服务端返回的发送成功指令,查找服务端返回的发送成功标识204,当电子设备201未接收到服务端返回的发送成功指令和/或未查找到服务端返回的发送成功标识,利用远程过程调用技术,将日志报文向服务端发送205。
本申请的上述实施例提供的方法,通过接收业务端发送的日志报文,其中,日志报文包括依据发送内容定义的日志报文和通过拦截技术获取所需发送信息后生成的日志报文,基于接收到的日志报文,生成日志报文的消息并通过消息队列将日志报文向服务端发送,接收服务端返回的发送成功指令,查找服务端返回的发送成功标识,响应于未接收到服务端返回的发送成功指令和/或响应于未查找到服务端返回的发送成功标识,利用远程过程调用技术,将日志报文向服务端发送,将消息传递和远程过程调用共同作为系统间通信的机制,为不同获取方式得到的日志报文提供了一种可靠性更强的日志发送方法。
进一步参考图3,其示出了用于发送日志的方法的第二实施例的示意图300。该方法的流程包括以下步骤:
步骤301,接收业务端发送的日志报文。
在本实施例中,执行主体可以通过有线连接方式或者无线连接方式从其他电子设备或者本地接收日志报文,其中,日志报文包括依据发送内容定义的日志报文和通过拦截技术获取所需发送信息后生成的日志报文。
在本实施例的一些可选的实现方式中,通过拦截技术获取所需发送信息后生成的日志报文在业务端通过如下方式得到:利用AOP技术拦截后台系统中所需上报日志的方法,获取方法对应的参数信息,其中,方法中标注有拦截所用的所需上报日志的注释信息;对参数信息进行封装,生成相应方法的日志报文发送至日志发送器。解决了现有技术中对于操作记录的日志难追踪、难复用的问题,业务系统只需要引入日志收发器的jar包,并在需要记录日志的方法上加入注释即可,为业务系统提供了一种简单、精准、代码入侵小的日志收集的方法。
例如,利用Spring框架的AOP(Aspect-Oriented Programming)面向切面编程技术来拦截后台系统中所需上报日志的方法,获取方法中的参数信息,参数信息包括:入参请求值、反参对象、操作员、方法描述信息、操作人员IP和服务器IP等,然后将获取的参数进行封装,生成方法对应的日志报文发送至日志发送器。
在本实施例的一些可选的实现方式中,接收业务端发送的日志报文包括:按照第一时间周期接收业务端依据发送内容定义的日志报文;按照第二时间周期接收业务端通过拦截技术获取所需发送信息后生成的日志报文,其中,接收到业务端依据发送内容定义的日志报文的时间点与接收到业务端通过拦截技术获取所需发送信息后生成的日志报文的时间点不同,时间周期包括:时间起始点和时间间隔。利用错时传送的机制,降低了系统处理的吞吐量,提高了日志发送的可靠性,进一步提升了系统性能。
步骤302,基于接收到的日志报文,生成日志报文的消息并通过消息队列将日志报文向服务端发送。
步骤303,接收服务端返回的发送成功指令,查找服务端返回的发送成功标识。
步骤304,响应于未接收到服务端返回的发送成功指令和/或响应于未查找到服务端返回的发送成功标识,将日志报文放入线程池队列。
在本实施例中,当执行主体未接收到服务端返回的发送成功指令和/或响应于未查找到服务端返回的发送成功标识,将日志报文放入线程池队列,用以进行再次异步消息发送。
步骤305,按照预设的重复规则,通过执行日志报文对应的线程,将日志报文向服务端重复发送。
在本实施例中,执行主体可以按照预设的重复次数,通过执行日志报文对应的线程,将日志报文向服务端进行重复发送,直到发送成功,停止重复发送,避免了因网络原因造成连接超时致使发送不成功的问题,进一步保证了日志发送的可靠性。
步骤306,响应于未接收到服务端返回的发送成功指令和/或响应于未查找到服务端返回的发送成功标识,利用远程过程调用技术,将日志报文向服务端发送。
在本实施例中,步骤302、303和306的具体操作与图1所示的实施例中的步骤102、103和104的操作基本相同,在此不再赘述。
从图3中可以看出,与图1对应的实施例相比,本实施例中的用于发送日志的方法的示意图300采用响应于未接收到服务端返回的发送成功指令和/或响应于未查找到服务端返回的发送成功标识,将日志报文放入线程池队列,按照预设的重复规则,通过执行日志报文对应的线程,将日志报文向服务端重复发送,在进一步保证日志发送的可靠性的基础上,节省了利用远程过程调用发送日志报文的过程,简化了日志发送过程,提高了日志发送的安全性。
进一步参考图4,本申请提供了一种用于发送日志的系统,如图4所示,该系统包括业务端401、日志发送器402和服务端403,其中,日志发送器402用于执行上述图1、图3所示的用于发送日志的方法;业务端401用于将依据发送内容定义的日志报文发送至日志发送器,利用AOP技术拦截后台系统中所需上报日志的方法,获取方法对应的参数信息,其中,方法中标注有拦截所用的所需上报日志的注释信息,对参数信息进行封装,生成相应方法的日志报文发送至日志发送器;服务端403用于接收日志发送器发送的日志报文,返回发送成功指令和发送成功标识,对接收到的日志报文进行校验,响应于校验通过,对日志报文进行封装,生成标准格式要求的日志数据,并存储于ES(ElasticSearch)数据库。
在该系统中,业务端还用于向服务端发送查询请求;服务端还用于接收业务端发送的查询请求,基于查询接口,向业务端反馈查询请求对应的查询结果。
根据本申请的用于发送日志的系统通过接收日志发送器发送的日志报文,对接收到的日志报文进行校验,响应于校验通过,对日志报文进行封装,生成标准格式要求的日志数据,并存储于ES数据库,接收业务端发送的查询请求,基于查询接口,向业务端反馈查询请求对应的查询结果,解决了现有技术中一些系统会将操作日志记录到数据库表中,但因每个系统的日志系统不同,很难实现跨系统的操作日志的复用和管理的问题,能够及时发现并跟踪操作记录日志中的问题,扩大了操作日志记录的功能和用途,实现了日志文件的同一管理;系统利用ES数据库对大数据搜索查询速度快的特性并利用查询接口,实现了方便快捷的日志查询和日志问题定位的功能,提升了系统效率。
进一步参考图5,作为对上述图1所示方法的实现,本申请提供了一种用于发送日志的装置的一个实施例,该装置实施例与图1所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
如图5所示,本实施例的用于发送日志的装置500包括:接收单元501、第一发送单元502、查询单元503和第二发送单元504。接收单元,被配置成接收业务端发送的日志报文,其中,日志报文包括依据发送内容定义的日志报文和通过拦截技术获取所需发送信息后生成的日志报文;第一发送单元,被配置成基于接收到的日志报文,生成日志报文的消息并通过消息队列将日志报文向服务端发送;查询单元,被配置成接收服务端返回的发送成功指令,查找服务端返回的发送成功标识;第二发送单元,被配置成响应于未接收到服务端返回的发送成功指令和/或响应于未查找到服务端返回的发送成功标识,利用远程过程调用技术,将日志报文向服务端发送。
在本实施例中,用于发送日志的装置500的接收单元501、第一发送单元502、查询单元503和第二发送单元504的具体处理及其所带来的技术效果可分别参考图1对应的实施例中的步骤101到步骤104的相关说明,在此不再赘述。
在本实施例的一些可选的实现方式中,装置还包括:转发单元,被配置成响应于未接收到服务端返回的发送成功指令和/或响应于未查找到服务端返回的发送成功标识,将日志报文放入线程池队列;重发单元,被配置成按照预设的重复规则,通过执行日志报文对应的线程,将日志报文向服务端重复发送。
在本实施例的一些可选的实现方式中,接收单元包括:第一接收模块,被配置成按照第一时间间隔接收业务端依据发送内容定义的日志报文;第二接收模块,被配置成按照第二时间间隔接收业务端通过拦截技术获取所需发送信息后生成的日志报文,其中,接收到业务端依据发送内容定义的日志报文的时间点与接收到业务端通过拦截技术获取所需发送信息后生成的日志报文的时间点不同。
在本实施例的一些可选的实现方式中,接收单元中的通过拦截技术获取所需发送信息后生成的日志报文通过业务端的如下单元得到:获取单元,被配置成利用AOP技术拦截后台系统中所需上报日志的方法,获取方法对应的参数信息,其中,方法中标注有拦截所用的所需上报日志的注释信息;封装单元,被配置成对参数信息进行封装,生成相应方法的日志报文发送至日志发送器。
如图6所示,是根据本申请实施例的用于发送日志的的方法的电子设备的框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本申请的实现。
如图6所示,该电子设备包括:一个或多个处理器601、存储器602,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在电子设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示GUI的图形信息的指令。在其它实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个电子设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。图6中以一个处理器601为例。
存储器602即为本申请所提供的非瞬时计算机可读存储介质。其中,所述存储器存储有可由至少一个处理器执行的指令,以使所述至少一个处理器执行本申请所提供的用于发送日志的方法。本申请的非瞬时计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行本申请所提供的用于发送日志的方法。
存储器602作为一种非瞬时计算机可读存储介质,可用于存储非瞬时软件程序、非瞬时计算机可执行程序以及模块,如本申请实施例中的用于发送日志的方法对应的程序指令/模块(例如,附图5所示的接收单元501、第一发送单元502、查询单元503和第二发送单元504)。处理器601通过运行存储在存储器602中的非瞬时软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例中的用于发送日志的方法。
存储器602可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据用于发送日志的电子设备的使用所创建的数据等。此外,存储器602可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些实施例中,存储器602可选包括相对于处理器601远程设置的存储器,这些远程存储器可以通过网络连接至用于发送日志的的电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
用于发送日志的方法的电子设备还可以包括:输入装置603和输出装置604。处理器601、存储器602、输入装置603和输出装置604可以通过总线或者其他方式连接,图6中以通过总线连接为例。
输入装置603可接收输入的数字或字符信息,以及产生与用于发送日志的电子设备的用户设置以及功能控制有关的键信号输入,例如触摸屏、小键盘、鼠标、轨迹板、触摸板、指示杆、一个或者多个鼠标按钮、轨迹球、操纵杆等输入装置。输出装置604可以包括显示设备、辅助照明装置(例如,LED)和触觉反馈装置(例如,振动电机)等。该显示设备可以包括但不限于,液晶显示器(LCD)、发光二极管(LED)显示器和等离子体显示器。在一些实施方式中,显示设备可以是触摸屏。
此处描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、专用ASIC(专用集成电路)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
这些计算程序(也称作程序、软件、软件应用、或者代码)包括可编程处理器的机器指令,并且可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。如本文使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置(例如,磁盘、光盘、存储器、可编程逻辑装置(PLD)),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。
根据本申请实施例的技术方案,通过接收业务端发送的日志报文,其中,日志报文包括依据发送内容定义的日志报文和通过拦截技术获取所需发送信息后生成的日志报文,基于接收到的日志报文,生成日志报文的消息并通过消息队列将日志报文向服务端发送,接收服务端返回的发送成功指令,查找服务端返回的发送成功标识,响应于未接收到服务端返回的发送成功指令和/或响应于未查找到服务端返回的发送成功标识,利用远程过程调用技术,将日志报文向服务端发送,将消息传递和远程过程调用共同作为系统间通信的机制,为不同获取方式得到的日志报文提供了一种可靠性更强的日志发送方法。采用响应于未接收到服务端返回的发送成功指令和/或响应于未查找到服务端返回的发送成功标识,将日志报文放入线程池队列,按照预设的重复规则,通过执行日志报文对应的线程,将日志报文向服务端重复发送,在进一步保证日志发送的可靠性的基础上,节省了利用远程过程调用发送日志报文的过程,简化了日志发送过程,提高了日志发送的安全性。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本申请公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本申请保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本申请的精神和原则之内所作的修改、等同替换和改进等,均应包含在本申请保护范围之内。