CN109815202B - 日志编辑方法及相关装置 - Google Patents
日志编辑方法及相关装置 Download PDFInfo
- Publication number
- CN109815202B CN109815202B CN201811640279.4A CN201811640279A CN109815202B CN 109815202 B CN109815202 B CN 109815202B CN 201811640279 A CN201811640279 A CN 201811640279A CN 109815202 B CN109815202 B CN 109815202B
- Authority
- CN
- China
- Prior art keywords
- sub
- function module
- log
- micro
- service instance
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本申请实施例公开了一种日志编辑方法及相关装置,方法包括:当检测到第一微服务实例的执行请求时,通过所述主函数模块调用所述第一微服务实例对应的多个所述子函数模块中的第一子函数模块获取日志标识;通过所述第一子函数模块根据预配置的日志组件生成包括所述日志标识的局部日志数据,所述局部日志数据关联所述第一微服务实例的执行过程;通过所述主函数模块获取所述局部日志数据,并根据所述局部日志数据中的所述日志标识将所述局部日志数据添加至全局日志数据。本申请实施例有利于实现微服务模式下不同微服务日志的串联形成全局日志数据,提升日志查询的便捷性。
Description
技术领域
本申请涉及电子技术领域,具体涉及一种日志编辑方法及相关装置。
背景技术
随着微服务架构的兴起,传统的单体应用场景下的应用的日志集中存储挑战越来越大,单体应用体系下,在时间维度上,一次业务请求的日志会集中在一个时间打印到日志文件,在排查持续问题时可以集中查看某个时间区间内的请求日志。
而微服务架构下,一次业务请求需要调用许多服务,对应的日志分布在不同服务的日志文件中,因此很难通过时间将一次业务的日志串联起来。
发明内容
本申请实施例提供了一种日志编辑方法及相关装置,以期实现微服务模式下不同微服务日志的串联形成全局日志数据,提升日志查询的便捷性。
第一方面,本申请实施例提供一种日志编辑方法,应用于电子设备,所述电子设备上安装有目标应用程序,所述目标应用程序包括主函数模块和多个子函数模块,所述方法包括:
当检测到第一微服务实例的执行请求时,通过所述主函数模块调用所述第一微服务实例对应的多个所述子函数模块中的第一子函数模块获取日志标识;
通过所述第一子函数模块根据预配置的日志组件生成包括所述日志标识的局部日志数据,所述局部日志数据关联所述第一微服务实例的执行过程;
通过所述主函数模块获取所述局部日志数据,并根据所述局部日志数据中的所述日志标识将所述局部日志数据添加至全局日志数据。
第二方面,本申请实施例提供一种日志编辑装置,应用于电子设备,所述电子设备上安装有目标应用程序,所述目标应用程序包括主函数模块和多个子函数模块,所述日志编辑装置包括获取单元、生成单元和处理单元,其中,
所述获取单元,用于当检测到第一微服务实例的执行请求时,通过所述主函数模块调用所述第一微服务实例对应的多个所述子函数模块中的第一子函数模块获取日志标识;
所述生成单元,用于通过所述第一子函数模块根据预配置的日志组件生成包括所述日志标识的局部日志数据,所述局部日志数据关联所述第一微服务实例的执行过程;
所述处理单元,用于通过所述主函数模块获取所述局部日志数据,并根据所述局部日志数据中的所述日志标识将所述局部日志数据添加至全局日志数据。
第三方面,本申请实施例提供一种电子设备,包括处理器、存储器、通信接口以及一个或多个程序,其中,上述一个或多个程序被存储在上述存储器中,并且被配置由上述处理器执行,上述程序包括用于执行本申请实施例第一方面任一方法中的步骤的指令。
第四方面,本申请实施例提供了一种计算机可读存储介质,其中,上述计算机可读存储介质存储用于电子数据交换的计算机程序,其中,上述计算机程序使得计算机执行如本申请实施例第一方面任一方法中所描述的部分或全部步骤。
第五方面,本申请实施例提供了一种计算机程序产品,其中,上述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,上述计算机程序可操作来使计算机执行如本申请实施例第一方面任一方法中所描述的部分或全部步骤。该计算机程序产品可以为一个软件安装包。
可以看出,本申请实施例中,电子设备首先当检测到第一微服务实例的执行请求时,通过所述主函数模块调用所述第一微服务实例对应的多个所述子函数模块中的第一子函数模块获取日志标识,然后,通过所述第一子函数模块根据预配置的日志组件生成包括所述日志标识的局部日志数据,所述局部日志数据关联所述第一微服务实例的执行过程,最后,通过所述主函数模块获取所述局部日志数据,并根据所述局部日志数据中的所述日志标识将所述局部日志数据添加至全局日志数据。可见,电子设备在微服务架构下,通过获取日志标识,并在每个微服务实例的局部日志数据中添加该日志标识,以使主函数模块可以根据该日志标识将每个局部日志数据串联起来更新在全局日志数据中,有利于实现微服务模式下不同微服务日志的串联,形成全局日志数据,为后续日志查询提供便捷性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种微服务架构的架构示意图;
图2是本申请实施例提供的一种日志编辑方法的流程示意图;
图3是本申请实施例提供的另一种日志编辑方法的流程示意图;
图4是本申请实施例提供的另一种日志编辑方法的流程示意图;
图5是本申请实施例提供的一种电子设备的结构示意图;
图6是本申请实施例提供的一种日志编辑装置的功能单元组成框图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、***、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
本申请实施例所涉及到的电子设备可以包括各种手持设备、车载设备、可穿戴设备、计算设备或连接到无线调制解调器的其他处理设备,以及各种形式的用户设备(UserEquipment,UE),移动台(Mobile Station,MS),电子设备(terminal device)等等。
下面结合附图对本申请实施例进行详细介绍。
微服务架构模式(Microservices Architecture Pattern)的目的是将大型的、复杂的、长期运行的应用程序构建为一组相互配合的服务,每个服务都可以很容易得到局部改良。
简而言之,微服务架构是一种将单应用程序作为一套小型服务开发的方法,每种应用程序都在其自己的进程中运行,并与轻量级机制(通常是HTTP资源的应用程序编辑接口(Application Programming Interface,API))进行通信。这些服务是围绕业务功能构建的,可以通过全自动部署机制进行独立部署。这些服务的集中化管理已经是最少的,它们可以用不同的编程语言编写,并使用不同的数据存储技术。
基于微服务的架构可以具有5到100个或更多个服务。API网关使用中可以为外部消费者提供统一的入口点,而与内部微服务的数量和组成无关,举例而言,如图1所示,基于微服务架构的应用A,该应用A由多个微服务应用构成,每个微服务对应该应用A中不同的功能,具体可以是微服务1对应功能1、微服务2对应功能2、微服务3对应功能3、微服务4对应功能4、微服务5对应功能5等,每个微服务可以由不同的设计团队设计完成,也就是说每个微服务之间是独立的,且每个微服务可以使用不同的编程语言编写。
下面对本发明实施例进行详细介绍。
请参阅图2,图2是本申请实施例提供了一种日志编辑方法的流程示意图,应用于电子设备,所述电子设备上安装有目标应用程序,所述目标应用程序包括主函数模块和多个子函数模块,如图所示,本日志编辑方法包括:
S201,电子设备当检测到第一微服务实例的执行请求时,通过所述主函数模块调用所述第一微服务实例对应的多个所述子函数模块中的第一子函数模块获取日志标识。
其中,所述第一微服务实例为目标应用程序中任意功能对应的对象,所述电子设备当检测到针对第一微服务实例的执行请求的具体实现方式可以是电子设备检测到了用户针对第一微服务实例的选取操作,该选取操作可以是触控操作、语音操作等,在此不做限定。
其中,主函数模块和多个子函数模块属于调用与被调用的关系。
其中,所述第一子函数模块获取日志标识的具体实现方式可以是从执行请求的请求头中获取,也可以是随机生成,在此不做限定。
S202,所述电子设备通过所述第一子函数模块根据预配置的日志组件生成包括所述日志标识的局部日志数据,所述局部日志数据关联所述第一微服务实例的执行过程。
其中,该日志组件为log4j,所述局部日志数据是根据第一微服务实例的执行过程生成的,例如包括第一微服务实例启动时间、结束时间、执行数据等,预配置的日志组件log4j中可以定义每条局部日志数据生成的格式,该生成格式中包括局部日志数据的组成部分,例如,时间、来源等,以及这些组成部分的位置和形式等。
其中,日志标识定义了每条局部日志的输出的目的地,例如可以是文件、接口服务器、事件记录器等,在此不做限定。
S203,所述电子设备通过所述主函数模块获取所述局部日志数据,并根据所述局部日志数据中的所述日志标识将所述局部日志数据添加至全局日志数据。
其中,主函数模块根据所述日志标识确定局部日志数据的输入目的地,根据该输出目的地将局部日志数据添加至目的地中的全局日志数据中,以实现全局日志数据的更新。
可以看出,本申请实施例中,电子设备首先当检测到第一微服务实例的执行请求时,通过所述主函数模块调用所述第一微服务实例对应的多个所述子函数模块中的第一子函数模块获取日志标识,然后,通过所述第一子函数模块根据预配置的日志组件生成包括所述日志标识的局部日志数据,所述局部日志数据关联所述第一微服务实例的执行过程,最后,通过所述主函数模块获取所述局部日志数据,并根据所述局部日志数据中的所述日志标识将所述局部日志数据添加至全局日志数据。可见,电子设备在微服务架构下,通过获取日志标识,并在每个微服务实例的局部日志数据中添加该日志标识,以使主函数模块可以根据该日志标识将每个局部日志数据串联起来更新在全局日志数据中,有利于实现微服务模式下不同微服务日志的串联,形成全局日志数据,为后续日志查询提供便捷性。
在一个可能的示例中,所述通过所述主函数模块调用所述第一微服务实例对应的多个所述子函数模块中的第一子函数模块获取日志标识,包括:
通过所述主函数模块调用所述第一微服务实例对应的多个所述子函数模块中的第一子函数模块获取针对所述第一微服务实例的执行请求的请求头;
通过所述第一子函数模块判断所述请求头中是否包括所述日志标识;
当判断出所述请求头中包括所述日志标识时,通过所述第一子函数模块获取所述请求头中的所述日志标识。
其中,在所述检测到第一微服务实例的执行请求时,所述第一子函数模块首先加载***,通过该***拦截所述执行请求的请求头,所述请求头为http请求头。
其中,***用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作,在这里,第一子函数模块加载***,使***拦截所述执行请求的http请求头。
可见,本示例中,电子设备需要执行第一微服务实例时,可以通过第一子函数获取启动请求的请求头,且在判断出请求头包括日志标识时获取日志标识,有利于提升微服务架构下,日志标识获取的便捷性,以及日志串联的可实现性。
在这个可能的示例中,所述通过所述第一子函数模块判断所述请求头中是否包括所述日志标识之后,所述方法还包括:
当判断出所述请求头中不包括所述日志标识时,通过所述第一子函数模块根据预设策略随机生成所述日志标识。
其中,所述随机生成的所述日志标识为全局唯一的字符串,所述预设策略包括生成的日志标识的字符串长度、字符串类型等,在此不做限定。
可见,本示例中,电子设备在判断出请求头中不包括所述日志标识时,根据预设策略随机生成日志标识,有利于提升所有微服务架构的日志标识获取的可实现性,以及日志标识生成的唯一性。
在一个可能的示例中,所述通过所述主函数模块调用所述第一微服务实例对应的多个所述子函数模块中的第一子函数模块获取日志标识之后,所述方法还包括:
通过所述第一子函数模块将所述日志标识存储到映射调试上下文(MappedDiagnostic Context,MDC)中;
通过所述第一子函数模块预加载熔断器,所述熔断器用于第二子函数模块获取所述日志标识,所述第二子函数模块对应的第二微服务实例独立于所述第一微服务实例。
其中,MDC可以看成是一个与当前线程绑定的哈希表,可以往其中添加键值对,例如日志标识,MDC中包含的内容可以被同一线程中执行的代码所访问。当前线程的子线程会继承其父线程中的MDC的内容。当需要记录日志时,只需要从MDC中获取所需的信息即可。
其中,熔断器为重写熔断器,通过配置一个处理类实现接口重写其方法,向第二子函数传递日志标识。
其中,所述第二子函数模块对应的第二微服务实例独立于所述第一微服务实例,即第二微服务实例与第一微服务实例为两个独立不相关的微服务,所述独立关系即为执行第二微服务实例的线程与执行第一微服务实例的线程为非同一线程。
可见,本示例中,电子设备在第一子函数模块获取日志标识之后,第一子函数模块会将日志标识存储在MDC中,可以使统一线程的子线程从MDC中迅速获取日志标识,而且预先加载熔断器,而不是在有非同一线程的微服务实例需要日志标识时再进行加载,有利于提升其他子函数模块获取日志标识的速度,提升日志编辑的时效性。
在这个可能的示例中,所述方法还包括:
在执行所述第一微服务实例时,当检测到第三微服务实例的执行请求时,确定所述第三微服务实例与所述第一微服务实例的第一关系;
通过所述第一子函数模块根据所述第一关系将所述日志标识传递给所述第三微服务实例对应的第三子函数模块。
其中,所述第一关系包括相互独立的关系和从属关系,所述从属关系,即两个微服务实例属于同一线程进行的微服务实例。
其中,第一子函数模块会根据不同的第一关系,通过不同的方法向第三子函数模块传递所述日志标识,所述方法预设置在第一子函数模块中。
可见,本示例中,电子设备在执行第一微服务实例的情况下,检测到其他微服务实例的启动请求时,根据该微服务实例与第一微服务实例的对应关系传递日志标识,有利于保障任意微服务实例均可以获取日志标识,提升了全局日志编辑的保障性。
在这个可能的示例中,所述第一关系为所述第三微服务实例从属于所述第一微服务实例,所述通过所述第一子函数模块根据所述第一关系将所述日志标识传递给所述第三微服务实例对应的第三子函数模块,包括:
当所述第一关系为从属关系时,通过所述第一子函数模块获取所述映射调试上下文中的所述日志标识;
通过所述第一子函数模块向所述主函数模块中的F客户端注入所述日志标识;
通过所述F客户端将所述日志标识注入到所述第三微服务实例的所述执行请求的请求头中。
其中,F客户端,即Feign,是一个声明web服务客户端,这比编写web服务客户端更便捷,使用Feign创建一个接口,并且只需要用注释的方法来配置进行定义,即可完成对服务提供方的接口绑定,简化了自行封装服务调用客户端的开发量。
其中,第一子函数模块可以通过F客户端创建的接口将日志标识传递给第三子函数模块,即注入到所述第三微服务实例的执行请求的请求头中。
可见,本示例中,电子设备在第一关系为从属关系时,可以直接通过F客户端向第三子函数模块传递日志标识,保障了第三微服务实例获取日志标识的可能性,而且F客户端为注释的方式,有利于降低日志标识传递接口的代码冗杂度。
在一个可能的示例中,所述第一关系为所述第三微服务实例独立于所述第一微服务实例,所述通过所述第一子函数模块根据所述第一关系将所述日志标识传递给所述第三微服务实例对应的第三子函数模块,包括:
当所述第一关系为独立关系时,通过所述第一子函数模块获取所述映射调试上下文中的所述日志标识;
通过所述第一子函数模块通过所述熔断器的预设策略向所述第三微服务实例对应的第三子函数模块传递所述日志标识。
其中,第一子函数模块通过熔断器的预设策略向所述第三微服务实例对应的第三子函数模块传递所述日志标识的具体实现方式可以是通过重写熔断器创建一个接口,通过该接口向第三子函数模块传递日志标识,其中,预设策略可以为重写熔断器的隔离策略。
其中,当需要同时启动处于独立关系的第一微服务实例和第三微服务实例时,可以通过重写熔断器的隔离策略实现非同一线程两个微服务实例之间的日志标识的传递。
可见,本示例中,电子设备在第一微服务实例执行的过程中需要启动与第一微服务实例不属于同一线程的第三微服务实例时,通过重写熔断器的隔离策略实现第三子函数模块获取日志标识,有利于提升每个微服务实例权实现全局日志编辑的可靠性。
针对上述图2所示的实施例,举例一种具体的实施例加以说明,其中,目标应用程序为应用程序A,应用程序A包括微服务实例1、微服务实例2,微服务实例1包括子实例3,微服务实例2包括子实例4,当用户在应用程序前端请求执行微服务实例1时,主函数模块调用微服务实例1对应的第一子函数模块通过请求头获取日志标识或者随机生成日志标识,并将日志标识存储在映射调试上下文中,并同时加载***和熔断器,当执行完成微服务实例1时,根据预配置的日志组件log4j生成包括日志标识的局部日志数据,然后,通过主函数模块将局部日志数据根据日志标识添加至全局日志数据中,且在执行微服务实例1时分为两种情况,情况一:检测到子实例3的执行请求时,通过调用第一子函数模块获取映射调试上下文中的日志标识,向所述主函数模块中的F客户端注入该日志标识,并通过F客户端将日志标识注入到子实例3的执行请求的请求头中,使子实例3可以有效获取日志标识生成局部日志数据;情况二:检测到微服务实例2的执行请求时,通过重写熔断器的隔离策略向微服务实例2对应的子函数模块传递日志标识,使微服务实例2可以有效获取日志标识生成局部日志数据,并在该过程中检测到微服务实例2的子实例4的启动请求时,通过向F客户端注入日志标识的方法使子实例4可以有效获取日志标识生成局部日志数据。
与上述图2所示的实施例一致的,请参阅图3,图3是本申请实施例提供的一种日志编辑方法的流程示意图,应用于电子设备,所述电子设备上安装有目标应用程序,所述目标应用程序包括主函数模块和多个子函数模块,如图所示,本日志编辑方法包括:
S301,电子设备当检测到第一微服务实例的执行请求时,通过所述主函数模块调用所述第一微服务实例对应的多个所述子函数模块中的第一子函数模块获取针对所述第一微服务实例的执行请求的请求头。
S302,所述电子设备通过所述第一子函数模块判断所述请求头中是否包括日志标识。
S303,所述电子设备当判断出所述请求头中包括所述日志标识时,通过所述第一子函数模块获取所述请求头中的所述日志标识。
S304,所述电子设备通过所述第一子函数模块根据预配置的日志组件生成包括所述日志标识的局部日志数据,所述局部日志数据关联所述第一微服务实例的执行过程。
S305,所述电子设备通过所述主函数模块获取所述局部日志数据,并根据所述局部日志数据中的所述日志标识将所述局部日志数据添加至全局日志数据。
可以看出,本申请实施例中,电子设备首先当检测到第一微服务实例的执行请求时,通过所述主函数模块调用所述第一微服务实例对应的多个所述子函数模块中的第一子函数模块获取日志标识,然后,通过所述第一子函数模块根据预配置的日志组件生成包括所述日志标识的局部日志数据,所述局部日志数据关联所述第一微服务实例的执行过程,最后,通过所述主函数模块获取所述局部日志数据,并根据所述局部日志数据中的所述日志标识将所述局部日志数据添加至全局日志数据。可见,电子设备在微服务架构下,通过获取日志标识,并在每个微服务实例的局部日志数据中添加该日志标识,以使主函数模块可以根据该日志标识将每个局部日志数据串联起来更新在全局日志数据中,有利于实现微服务模式下不同微服务日志的串联,形成全局日志数据,为后续日志查询提供便捷性。
此外,电子设备需要执行第一微服务实例时,可以通过第一子函数获取启动请求的请求头,且在判断出请求头包括日志标识时获取日志标识,有利于提升微服务架构下,日志标识获取的便捷性,以及日志串联的可实现性。
与上述图2所示的实施例一致的,请参阅图4,图4是本申请实施例提供的一种日志编辑方法的流程示意图,应用于电子设备,所述电子设备上安装有目标应用程序,所述目标应用程序包括主函数模块和多个子函数模块,如图所示,本日志编辑方法包括:
S401,电子设备当检测到第一微服务实例的执行请求时,通过所述主函数模块调用所述第一微服务实例对应的多个所述子函数模块中的第一子函数模块获取针对所述第一微服务实例的执行请求的请求头。
S402,所述电子设备通过所述第一子函数模块判断所述请求头中是否包括日志标识。
S403,所述电子设备当判断出所述请求头中不包括所述日志标识时,通过所述第一子函数模块根据预设策略随机生成所述日志标识。
S404,所述电子设备通过所述第一子函数模块将所述日志标识存储到映射调试上下文中。
S405,所述电子设备通过所述第一子函数模块预加载熔断器,所述熔断器用于第二子函数模块获取所述日志标识,所述第二子函数模块对应的第二微服务实例独立于所述第一微服务实例。
S406,所述电子设备通过所述第一子函数模块根据预配置的日志组件生成包括所述日志标识的局部日志数据,所述局部日志数据关联所述第一微服务实例的执行过程。
S407,所述电子设备通过所述主函数模块获取所述局部日志数据,并根据所述局部日志数据中的所述日志标识将所述局部日志数据添加至全局日志数据。
S408,所述电子设备当检测到第三微服务实例的执行请求时,确定所述第三微服务实例与所述第一微服务实例的第一关系。
S409,所述电子设备当所述第一关系为从属关系时,通过所述第一子函数模块获取所述映射调试上下文中的所述日志标识。
S410,所述电子设备通过所述第一子函数模块向所述主函数模块中的F客户端注入所述日志标识。
S411,所述电子设备通过所述F客户端将所述日志标识注入到所述第三微服务实例的所述执行请求的请求头中。
可以看出,本申请实施例中,电子设备首先当检测到第一微服务实例的执行请求时,通过所述主函数模块调用所述第一微服务实例对应的多个所述子函数模块中的第一子函数模块获取日志标识,然后,通过所述第一子函数模块根据预配置的日志组件生成包括所述日志标识的局部日志数据,所述局部日志数据关联所述第一微服务实例的执行过程,最后,通过所述主函数模块获取所述局部日志数据,并根据所述局部日志数据中的所述日志标识将所述局部日志数据添加至全局日志数据。可见,电子设备在微服务架构下,通过获取日志标识,并在每个微服务实例的局部日志数据中添加该日志标识,以使主函数模块可以根据该日志标识将每个局部日志数据串联起来更新在全局日志数据中,有利于实现微服务模式下不同微服务日志的串联,形成全局日志数据,为后续日志查询提供便捷性。
此外,电子设备在判断出请求头中不包括所述日志标识时,根据预设策略随机生成日志标识,有利于提升所有微服务架构的日志标识获取的可实现性,以及日志标识生成的唯一性。
此外,电子设备在第一子函数模块获取日志标识之后,第一子函数模块会将日志标识存储在映射调试上下文中,可以使统一线程的子线程从映射调试上下文中迅速获取日志标识,而且预先加载熔断器,而不是在有非同一线程的微服务实例需要日志标识时再进行加载,有利于提升其他子函数模块获取日志标识的速度,提升日志编辑的时效性。
此外,电子设备在第一关系为从属关系时,可以直接通过F客户端向第三子函数模块传递日志标识,保障了第三微服务实例获取日志标识的可能性,而且F客户端为注释的方式,有利于降低日志标识传递接口的代码冗杂度。
与上述图2、图3、图4所示的实施例一致的,请参阅图5,图5是本申请实施例提供的一种电子设备500的结构示意图,所述电子设备500上安装有目标应用程序,所述目标应用程序包括主函数模块和多个子函数模块,如图5所示,所述电子设备500包括应用处理器510、存储器520、通信接口530以及一个或多个程序521,其中,所述一个或多个程序521被存储在上述存储器520中,并且被配置由上述应用处理器510执行,所述一个或多个程序521包括用于执行以下步骤的指令:
当检测到第一微服务实例的执行请求时,通过所述主函数模块调用所述第一微服务实例对应的多个所述子函数模块中的第一子函数模块获取日志标识;
通过所述第一子函数模块根据预配置的日志组件生成包括所述日志标识的局部日志数据,所述局部日志数据关联所述第一微服务实例的执行过程;
通过所述主函数模块获取所述局部日志数据,并根据所述局部日志数据中的所述日志标识将所述局部日志数据添加至全局日志数据。
可以看出,本申请实施例中,电子设备首先当检测到第一微服务实例的执行请求时,通过所述主函数模块调用所述第一微服务实例对应的多个所述子函数模块中的第一子函数模块获取日志标识,然后,通过所述第一子函数模块根据预配置的日志组件生成包括所述日志标识的局部日志数据,所述局部日志数据关联所述第一微服务实例的执行过程,最后,通过所述主函数模块获取所述局部日志数据,并根据所述局部日志数据中的所述日志标识将所述局部日志数据添加至全局日志数据。可见,电子设备在微服务架构下,通过获取日志标识,并在每个微服务实例的局部日志数据中添加该日志标识,以使主函数模块可以根据该日志标识将每个局部日志数据串联起来更新在全局日志数据中,有利于实现微服务模式下不同微服务日志的串联,形成全局日志数据,为后续日志查询提供便捷性。
在一个可能的示例中,在所述通过所述主函数模块调用所述第一微服务实例对应的多个所述子函数模块中的第一子函数模块获取日志标识方面,所述一个或多个程序521中的指令具体用于执行以下操作:通过所述主函数模块调用所述第一微服务实例对应的多个所述子函数模块中的第一子函数模块获取针对所述第一微服务实例的执行请求的请求头;以及用于通过所述第一子函数模块判断所述请求头中是否包括所述日志标识;以及用于当判断出所述请求头中包括所述日志标识时,通过所述第一子函数模块获取所述请求头中的所述日志标识。
在这个可能的示例中,所述一个或多个程序521还包括用于执行以下步骤的指令:所述通过所述第一子函数模块判断所述请求头中是否包括所述日志标识之后,当判断出所述请求头中不包括所述日志标识时,通过所述第一子函数模块根据预设策略随机生成所述日志标识。
在一个可能的示例中,所述一个或多个程序521还包括用于执行以下步骤的指令:所述通过所述主函数模块调用所述第一微服务实例对应的多个所述子函数模块中的第一子函数模块获取日志标识之后,通过所述第一子函数模块将所述日志标识存储到映射调试上下文中;以及通过所述第一子函数模块预加载熔断器,所述熔断器用于第二子函数模块获取所述日志标识,所述第二子函数模块对应的第二微服务实例独立于所述第一微服务实例。
在这个可能的示例中,所述一个或多个程序521还包括用于执行以下步骤的指令:在执行所述第一微服务实例时,当检测到第三微服务实例的执行请求时,确定所述第三微服务实例与所述第一微服务实例的第一关系;以及通过所述第一子函数模块根据所述第一关系将所述日志标识传递给所述第三微服务实例对应的第三子函数模块。
在这个可能的示例中,所述第一关系为所述第三微服务实例从属于所述第一微服务实例,在所述通过所述第一子函数模块根据所述第一关系将所述日志标识传递给所述第三微服务实例对应的第三子函数模块方面,所述一个或多个程序521中的指令具体用于执行以下操作:当所述第一关系为从属关系时,通过所述第一子函数模块获取所述映射调试上下文中的所述日志标识;以及用于通过所述第一子函数模块向所述主函数模块中的F客户端注入所述日志标识;以及用于通过所述F客户端将所述日志标识注入到所述第三微服务实例的所述执行请求的请求头中。
在一个可能的示例中,所述第一关系为所述第三微服务实例独立于所述第一微服务实例,在所述通过所述第一子函数模块根据所述第一关系将所述日志标识传递给所述第三微服务实例对应的第三子函数模块方面,所述一个或多个程序521中的指令具体用于执行以下操作:当所述第一关系为独立关系时,通过所述第一子函数模块获取所述映射调试上下文中的所述日志标识;以及用于通过所述第一子函数模块通过所述熔断器的预设策略向所述第三微服务实例对应的第三子函数模块传递所述日志标识。
上述主要从方法侧执行过程的角度对本申请实施例的方案进行了介绍。可以理解的是,电子设备为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所提供的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例可以根据上述方法示例对电子设备进行功能单元的划分,例如,可以对应各个功能划分各个功能单元,也可以将两个或两个以上的功能集成在一个处理单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。需要说明的是,本申请实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
图6是本申请实施例中所涉及的日志编辑装置600的功能单元组成框图。该日志编辑装置600应用于电子设备,所述电子设备上安装有目标应用程序,所述目标应用程序包括主函数模块和多个子函数模块,该日志编辑装置600包括获取单元601、生成单元602和处理单元603,其中:
所述获取单元601,用于当检测到第一微服务实例的执行请求时,通过所述主函数模块调用所述第一微服务实例对应的多个所述子函数模块中的第一子函数模块获取日志标识;
所述生成单元602,用于通过所述第一子函数模块根据预配置的日志组件生成包括所述日志标识的局部日志数据,所述局部日志数据关联所述第一微服务实例的执行过程;
所述处理单元603,用于通过所述主函数模块获取所述局部日志数据,并根据所述局部日志数据中的所述日志标识将所述局部日志数据添加至全局日志数据。
可以看出,本申请实施例中,电子设备首先当检测到第一微服务实例的执行请求时,通过所述主函数模块调用所述第一微服务实例对应的多个所述子函数模块中的第一子函数模块获取日志标识,然后,通过所述第一子函数模块根据预配置的日志组件生成包括所述日志标识的局部日志数据,所述局部日志数据关联所述第一微服务实例的执行过程,最后,通过所述主函数模块获取所述局部日志数据,并根据所述局部日志数据中的所述日志标识将所述局部日志数据添加至全局日志数据。可见,电子设备在微服务架构下,通过获取日志标识,并在每个微服务实例的局部日志数据中添加该日志标识,以使主函数模块可以根据该日志标识将每个局部日志数据串联起来更新在全局日志数据中,有利于实现微服务模式下不同微服务日志的串联,形成全局日志数据,为后续日志查询提供便捷性。
在一个可能的示例中,在所述通过所述主函数模块调用所述第一微服务实例对应的多个所述子函数模块中的第一子函数模块获取日志标识方面,所述获取单元601具体用于:通过所述主函数模块调用所述第一微服务实例对应的多个所述子函数模块中的第一子函数模块获取针对所述第一微服务实例的执行请求的请求头;以及用于通过所述第一子函数模块判断所述请求头中是否包括所述日志标识;以及用于当判断出所述请求头中包括所述日志标识时,通过所述第一子函数模块获取所述请求头中的所述日志标识。
在这个可能的示例中,所述获取单元601在所述通过所述第一子函数模块判断所述请求头中是否包括所述日志标识之后,还用于:当判断出所述请求头中不包括所述日志标识时,通过所述第一子函数模块根据预设策略随机生成所述日志标识。
在一个可能的示例中,所述处理单元603在所述通过所述主函数模块调用所述第一微服务实例对应的多个所述子函数模块中的第一子函数模块获取日志标识之后,还用于:通过所述第一子函数模块将所述日志标识存储到映射调试上下文中;以及通过所述第一子函数模块预加载熔断器,所述熔断器用于第二子函数模块获取所述日志标识,所述第二子函数模块对应的第二微服务实例独立于所述第一微服务实例。
在这个可能的示例中,所述处理单元603还用于:在执行所述第一微服务实例时,当检测到第三微服务实例的执行请求时,确定所述第三微服务实例与所述第一微服务实例的第一关系;以及通过所述第一子函数模块根据所述第一关系将所述日志标识传递给所述第三微服务实例对应的第三子函数模块。
在这个可能的示例中,所述第一关系为所述第三微服务实例从属于所述第一微服务实例,在所述通过所述第一子函数模块根据所述第一关系将所述日志标识传递给所述第三微服务实例对应的第三子函数模块方面,所述处理单元603具体用于:当所述第一关系为从属关系时,通过所述第一子函数模块获取所述映射调试上下文中的所述日志标识;以及用于通过所述第一子函数模块向所述主函数模块中的F客户端注入所述日志标识;以及用于通过所述F客户端将所述日志标识注入到所述第三微服务实例的所述执行请求的请求头中。
在一个可能的示例中,所述第一关系为所述第三微服务实例独立于所述第一微服务实例,在所述通过所述第一子函数模块根据所述第一关系将所述日志标识传递给所述第三微服务实例对应的第三子函数模块方面,所述处理单元603具体用于:当所述第一关系为独立关系时,通过所述第一子函数模块获取所述映射调试上下文中的所述日志标识;以及用于通过所述第一子函数模块通过所述熔断器的预设策略向所述第三微服务实例对应的第三子函数模块传递所述日志标识。
其中,获取单元601和处理单元603可以是处理器、通信接口或者收发器,生成单元602可以是处理器。
本申请实施例还提供一种计算机存储介质,其中,该计算机存储介质存储用于电子数据交换的计算机程序,该计算机程序使得计算机执行如上述方法实施例中记载的任一方法的部分或全部步骤,上述计算机包括电子设备。
本申请实施例还提供一种计算机程序产品,上述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,上述计算机程序可操作来使计算机执行如上述方法实施例中记载的任一方法的部分或全部步骤。该计算机程序产品可以为一个软件安装包,上述计算机包括电子设备。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例上述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取器(英文:Random Access Memory,简称:RAM)、磁盘或光盘等。
以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (10)
1.一种日志编辑方法,其特征在于,应用于电子设备,所述电子设备上安装有目标应用程序,所述目标应用程序包括主函数模块和多个子函数模块,所述方法包括:
当检测到第一微服务实例的执行请求时,通过所述主函数模块调用所述第一微服务实例对应的多个所述子函数模块中的第一子函数模块获取日志标识;
通过所述第一子函数模块根据预配置的日志组件生成包括所述日志标识的局部日志数据,所述局部日志数据关联所述第一微服务实例的执行过程;
通过所述主函数模块获取所述局部日志数据,并根据所述局部日志数据中的所述日志标识将所述局部日志数据添加至全局日志数据;
所述通过所述主函数模块调用所述第一微服务实例对应的多个所述子函数模块中的第一子函数模块获取日志标识之后,所述方法还包括:
通过所述第一子函数模块预加载熔断器,所述熔断器用于第二子函数模块获取所述日志标识,所述第二子函数模块对应的第二微服务实例独立于所述第一微服务实例;
其中,所述熔断器为重写熔断器,通过配置一个处理类实现接口重写其方法,向第二子函数模块传递日志标识。
2.根据权利要求1所述的方法,其特征在于,所述通过所述主函数模块调用所述第一微服务实例对应的多个所述子函数模块中的第一子函数模块获取日志标识,包括:
通过所述主函数模块调用所述第一微服务实例对应的多个所述子函数模块中的第一子函数模块获取针对所述第一微服务实例的执行请求的请求头;
通过所述第一子函数模块判断所述请求头中是否包括所述日志标识;
当判断出所述请求头中包括所述日志标识时,通过所述第一子函数模块获取所述请求头中的所述日志标识。
3.根据权利要求2所述的方法,其特征在于,所述通过所述第一子函数模块判断所述请求头中是否包括所述日志标识之后,所述方法还包括:
当判断出所述请求头中不包括所述日志标识时,通过所述第一子函数模块根据预设策略随机生成所述日志标识。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述通过所述主函数模块调用所述第一微服务实例对应的多个所述子函数模块中的第一子函数模块获取日志标识之后,所述方法还包括:
通过所述第一子函数模块将所述日志标识存储到映射调试上下文中。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
在执行所述第一微服务实例时,当检测到第三微服务实例的执行请求时,确定所述第三微服务实例与所述第一微服务实例的第一关系;
通过所述第一子函数模块根据所述第一关系将所述日志标识传递给所述第三微服务实例对应的第三子函数模块。
6.根据权利要求5所述的方法,其特征在于,所述第一关系为所述第三微服务实例从属于所述第一微服务实例,所述通过所述第一子函数模块根据所述第一关系将所述日志标识传递给所述第三微服务实例对应的第三子函数模块,包括:
当所述第一关系为从属关系时,通过所述第一子函数模块获取所述映射调试上下文中的所述日志标识;
通过所述第一子函数模块向所述主函数模块中的F客户端注入所述日志标识;
通过所述F客户端将所述日志标识注入到所述第三微服务实例的所述执行请求的请求头中。
7.根据权利要求5所述的方法,其特征在于,所述第一关系为所述第三微服务实例独立于所述第一微服务实例,所述通过所述第一子函数模块根据所述第一关系将所述日志标识传递给所述第三微服务实例对应的第三子函数模块,包括:
当所述第一关系为独立关系时,通过所述第一子函数模块获取所述映射调试上下文中的所述日志标识;
通过所述第一子函数模块通过所述熔断器的预设策略向所述第三微服务实例对应的第三子函数模块传递所述日志标识。
8.一种日志编辑装置,其特征在于,应用于电子设备,所述电子设备上安装有目标应用程序,所述目标应用程序包括主函数模块和多个子函数模块,所述日志编辑装置包括获取单元、生成单元和处理单元,其中,
所述获取单元,用于当检测到第一微服务实例的执行请求时,通过所述主函数模块调用所述第一微服务实例对应的多个所述子函数模块中的第一子函数模块获取日志标识;
所述生成单元,用于通过所述第一子函数模块根据预配置的日志组件生成包括所述日志标识的局部日志数据,所述局部日志数据关联所述第一微服务实例的执行过程;
所述处理单元,用于通过所述主函数模块获取所述局部日志数据,并根据所述局部日志数据中的所述日志标识将所述局部日志数据添加至全局日志数据;
所述获取单元,还用于通过所述第一子函数模块预加载熔断器,所述熔断器用于第二子函数模块获取所述日志标识,所述第二子函数模块对应的第二微服务实例独立于所述第一微服务实例;
其中,所述熔断器为重写熔断器,通过配置一个处理类实现接口重写其方法,向第二子函数模块传递日志标识。
9.一种电子设备,其特征在于,包括处理器、存储器、通信接口,以及一个或多个程序,所述一个或多个程序被存储在所述存储器中,并且被配置由所述处理器执行,所述程序包括用于执行如权利要求1-7任一项所述的方法中的步骤的指令。
10.一种计算机可读存储介质,其特征在于,存储用于电子数据交换的计算机程序,其中,所述计算机程序使得计算机执行如权利要求1-7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811640279.4A CN109815202B (zh) | 2018-12-29 | 2018-12-29 | 日志编辑方法及相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811640279.4A CN109815202B (zh) | 2018-12-29 | 2018-12-29 | 日志编辑方法及相关装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109815202A CN109815202A (zh) | 2019-05-28 |
CN109815202B true CN109815202B (zh) | 2022-03-22 |
Family
ID=66603073
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811640279.4A Active CN109815202B (zh) | 2018-12-29 | 2018-12-29 | 日志编辑方法及相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109815202B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110515814B (zh) * | 2019-08-16 | 2023-09-19 | 海南车智易通信息技术有限公司 | iOS客户端的全量日志收集方法、装置和移动终端 |
CN112882919A (zh) * | 2021-03-29 | 2021-06-01 | 浪潮云信息技术股份公司 | 基于log4j的微服务架构的日志链路追踪方法和*** |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105808414A (zh) * | 2016-03-08 | 2016-07-27 | 联想(北京)有限公司 | 一种日志处理方法及日志处理电子设备 |
CN106850782A (zh) * | 2017-01-17 | 2017-06-13 | 泰康保险集团股份有限公司 | 用于日志处理的方法和*** |
US10235249B1 (en) * | 2016-07-01 | 2019-03-19 | EMC IP Holding Company LLC | System and method for PaaS replication |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10114970B2 (en) * | 2015-06-02 | 2018-10-30 | ALTR Solutions, Inc. | Immutable logging of access requests to distributed file systems |
CN109104491A (zh) * | 2018-08-30 | 2018-12-28 | 郑州云海信息技术有限公司 | 一种微服务调用方法、装置、服务器及存储介质 |
-
2018
- 2018-12-29 CN CN201811640279.4A patent/CN109815202B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105808414A (zh) * | 2016-03-08 | 2016-07-27 | 联想(北京)有限公司 | 一种日志处理方法及日志处理电子设备 |
US10235249B1 (en) * | 2016-07-01 | 2019-03-19 | EMC IP Holding Company LLC | System and method for PaaS replication |
CN106850782A (zh) * | 2017-01-17 | 2017-06-13 | 泰康保险集团股份有限公司 | 用于日志处理的方法和*** |
Non-Patent Citations (2)
Title |
---|
SpringCloud之Feign转发请求头(header参数);小沐禾;《博客园》;20181010;第1-2页 * |
在SpringBoot项目中添加logback的MDC;hongyang321;《CSDN https://blog.csdn.net/hongyang321/article/details/78803584》;20171214;第1页 * |
Also Published As
Publication number | Publication date |
---|---|
CN109815202A (zh) | 2019-05-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109815683B (zh) | 权限验证方法及相关装置 | |
CN110874236B (zh) | 一种跨平台应用装置、终端及存储介质 | |
WO2017129016A1 (zh) | 一种资源访问方法、装置及*** | |
US10176327B2 (en) | Method and device for preventing application in an operating system from being uninstalled | |
US20210097476A1 (en) | Container Management Method, Apparatus, and Device | |
CN106169042A (zh) | 管理权限的方法及装置 | |
CN113076502A (zh) | 一种基于请求标识的参数控制方法与*** | |
CN109815202B (zh) | 日志编辑方法及相关装置 | |
CN115048642B (zh) | 多可信执行环境下可信应用间的通信方法及电子设备 | |
CN110045998B (zh) | 加载动态库的方法及装置 | |
CN103034811A (zh) | 一种文件处理的方法、***及装置 | |
CN112035379B (zh) | 存储空间的使用方法、装置、存储介质以及电子装置 | |
CN112543194B (zh) | 移动终端登录方法、装置、计算机设备和存储介质 | |
CN112527377B (zh) | 应用程序生成处理方法、装置、计算机设备和存储介质 | |
CN114357529A (zh) | 一种支持多浏览器的本地证书库访问方法、***及设备 | |
CN116975850B (zh) | 合约运行方法、装置、电子设备及存储介质 | |
CN113065131A (zh) | 插件的安全控制方法、装置和存储介质 | |
CN110765426A (zh) | 设备权限设置方法、装置、设备以及计算机存储介质 | |
CN117591248B (zh) | 基于容器化虚拟机的终端***处理方法及电子设备 | |
CN112637106A (zh) | 终端访问网站的方法及装置 | |
CN117828672B (zh) | 细粒度动态授权的访问控制与高并发处理方法及装置 | |
CN115022387B (zh) | 跨域预检请求的处理方法、装置、设备及介质 | |
CN115883536B (zh) | 文件传递方法、装置、***及存储介质 | |
CN113326067B (zh) | 命令执行方法、***、计算机设备和存储介质 | |
CN110032406B (zh) | 基于消息的视图加载方法、装置、设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |