CN110245074B - 一种日志记录的生成方法、装置、存储介质和服务器 - Google Patents

一种日志记录的生成方法、装置、存储介质和服务器 Download PDF

Info

Publication number
CN110245074B
CN110245074B CN201910422571.7A CN201910422571A CN110245074B CN 110245074 B CN110245074 B CN 110245074B CN 201910422571 A CN201910422571 A CN 201910422571A CN 110245074 B CN110245074 B CN 110245074B
Authority
CN
China
Prior art keywords
log
uuid
source code
function
operation response
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
Application number
CN201910422571.7A
Other languages
English (en)
Other versions
CN110245074A (zh
Inventor
王宸
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ping An Property and Casualty Insurance Company of China Ltd
Original Assignee
Ping An Property and Casualty Insurance Company of China Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Ping An Property and Casualty Insurance Company of China Ltd filed Critical Ping An Property and Casualty Insurance Company of China Ltd
Priority to CN201910422571.7A priority Critical patent/CN110245074B/zh
Publication of CN110245074A publication Critical patent/CN110245074A/zh
Application granted granted Critical
Publication of CN110245074B publication Critical patent/CN110245074B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/366Software debugging using diagnostics

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明涉及计算机技术领域,提出一种日志记录的生成方法、装置、存储介质和服务器。该日志记录的生成方法包括:在软件的运行过程中,若接收到操作请求,则产生一个uuid;获取当前执行的目标操作响应的源代码;检测所述源代码中是否包含与所述操作请求关联的标记符,所述软件包含的每个操作响应的源代码均预先添加与自身所响应的操作请求关联的标记符;若所述源代码中包含与所述操作请求关联的标记符,则为所述目标操作响应所生成的日志记录添加所述uuid。通过这样设置,对应于同一个操作请求的日志记录将包含同一个uuid,从而能够获知哪些日志记录对应于同一个操作请求,为bug的定位和分析提供了帮助。

Description

一种日志记录的生成方法、装置、存储介质和服务器
技术领域
本发明涉及计算机技术领域,尤其涉及一种日志记录的生成方法、装置、存储介质和服务器。
背景技术
当各个软件启动时,为了追踪产生的bug,通常会使用日志文件来记录软件运行时关键的数据和操作。然而,由于每条日志记录之间的上下文关系并不明确,也即无法获知哪些日志记录是对应于同一个操作请求的,这给bug的定位和分析带来较大的困难。
发明内容
有鉴于此,本发明实施例提供了一种日志记录的生成方法、装置、存储介质和服务器,能够获知哪些日志记录对应于同一个操作请求,为bug的定位和分析提供帮助。
本发明实施例的第一方面,提供了一种日志记录的生成方法,包括:
在软件的运行过程中,若接收到操作请求,则产生一个uuid;
获取当前执行的目标操作响应的源代码;
检测所述源代码中是否包含与所述操作请求关联的标记符,所述软件包含的每个操作响应的源代码均预先添加与自身所响应的操作请求关联的标记符;
若所述源代码中包含与所述操作请求关联的标记符,则为所述目标操作响应所生成的日志记录添加所述uuid。
本发明实施例的第二方面,提供了一种日志记录的生成装置,包括:
uuid产生模块,用于在软件的运行过程中,若接收到操作请求,则产生一个uuid;
源代码获取模块,获取当前执行的目标操作响应的源代码;
标记符检测模块,用于检测所述源代码中是否包含与所述操作请求关联的标记符,所述软件包含的每个操作响应的源代码均预先添加与自身所响应的操作请求关联的标记符;
uuid添加模块,用于若所述源代码中包含与所述操作请求关联的标记符,则为所述目标操作响应所生成的日志记录添加所述uuid。
本发明实施例的第三方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可读指令,所述计算机可读指令被处理器执行时实现如本发明实施例的第一方面提出的日志记录的生成方法的步骤。
本发明实施例的第四方面,提供了一种服务器,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机可读指令,所述处理器执行所述计算机可读指令时实现如本发明实施例的第一方面提出的日志记录的生成方法的步骤。
本申请提出的日志记录的生成方法包括:在软件的运行过程中,若接收到操作请求,则产生一个uuid;获取当前执行的目标操作响应的源代码;检测所述源代码中是否包含与所述操作请求关联的标记符,所述软件包含的每个操作响应的源代码均预先添加与自身所响应的操作请求关联的标记符;若所述源代码中包含与所述操作请求关联的标记符,则为所述目标操作响应所生成的日志记录添加所述uuid。通过这样设置,对应于同一个操作请求的日志记录将包含同一个uuid,从而能够获知哪些日志记录对应于同一个操作请求,为bug的定位和分析提供了帮助。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种日志记录的生成方法的第一个实施例的流程图;
图2是本发明实施例提供的一种日志记录的生成方法的第二个实施例的流程图;
图3是本发明实施例提供的一种日志记录的生成方法的第三个实施例的流程图;
图4是本发明实施例提供的一种日志记录的生成装置的一个实施例的结构图;
图5是本发明实施例提供的一种服务器的示意图。
具体实施方式
本发明实施例提供了一种日志记录的生成方法、装置、存储介质和服务器,能够获知哪些日志记录对应于同一个操作请求,为bug的定位和分析提供帮助。
为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
请参阅图1,本发明实施例中一种日志记录的生成方法的第一个实施例包括:
101、在软件的运行过程中,若接收到操作请求,则产生一个uuid;
在某个软件的运行过程中,若接收到操作请求,则产生一个uuid。该软件能够对接收到的操作请求进行响应,并生成相应的日志记录。uuid是通用唯一识别码的缩写,是一种软件建构的标准,亦为开放软件基金会组织在分布式计算环境领域的一部分。具体的,可以采用随机的方式产生uuid,也可以按照预设的编排规则产生uuid。
102、获取当前执行的目标操作响应的源代码;
接着,获取当前执行的目标操作响应的源代码。应当理解,假设当前执行的操作响应为A,则A为目标操作响应,等待A执行完毕后开始执行操作响应B时,则B成为目标操作响应,以此类推。
103、检测所述源代码中是否包含与所述操作请求关联的标记符;
在获取到当前执行的目标操作响应的源代码之后,检测所述源代码中是否包含与所述操作请求关联的标记符,所述软件包含的每个操作响应的源代码均预先添加与自身所响应的操作请求关联的标记符。比如,当前执行用户登录的操作响应,则会检测用户登录步骤的源代码中是否包含一个与该操作请求关联的标记符。
具体的,开发人员可以预先确定某个操作请求对应的关键的操作响应,并为这些操作响应的源代码添加一个特定的标记符。比如,某个操作请求包含以下几个关键的操作响应:(1)根据用户ID获取用户的访问权限;(2)根据用户ID和权限获取一个任务;(3)组装任务的数据结构返回给客户端。那么可以为这3个操作响应相关的源代码中添加一个相同的标记符,与该操作请求关联。
若所述源代码中包含与所述操作请求关联的标记符,则执行步骤104,否则执行步骤105。
104、为所述目标操作响应所生成的日志记录添加所述uuid;
如果包含与所述操作请求关联的标记符,表明该目标操作响应是对于所述操作请求的响应,此时为该目标操作响应产生的日志记录添加步骤101产生的uuid。通过这样设置,用户只需查找具有相同uuid的日志记录,即可确定这些日志记录是对应于同一个操作请求的,从而便于定位和追踪bug。
105、不对所述目标操作响应所生成的日志记录做处理。
所述源代码中不含与所述操作请求关联的标记符,表明该目标操作响应不是对于所述操作请求的响应,此时不对所述目标操作响应所生成的日志记录做处理,即不添加uuid。
进一步的,在为所述目标操作响应所生成的日志记录添加所述uuid之后,还可以包括:
(1)获取输入的目标uuid;
(2)从已生成的所有日志记录中搜索包含所述目标uuid的日志记录;
(3)将搜索到的日志记录整合成一份日志文件,并通过预设的方式展示所述日志文件。
因为每条日志记录都会记录一个uuid,这些零散的日志数据,通过uuid关联了起来,具有相同uuid的日志记录即是对应于同一个操作请求的日志记录。
关于日志展现的方式,可以将消息通过网络发送给一个统一的日志服务器中,然后通过搜索某个uuid,可以筛选出包含这个uuid的所有日志记录,并将搜索到的日志记录整合成一份日志文件,通过预设的方式展示所述日志文件;也可以将日志打印到本地的一个特定目录下,然后通过另外一个demon进程,定时收集日志发送到一个数据展示的服务器中,同样可以通过搜索uuid获取相关的调用链路信息。
本发明实施例提出的日志记录的生成方法包括:在软件的运行过程中,若接收到操作请求,则产生一个uuid;获取当前执行的目标操作响应的源代码;检测所述源代码中是否包含与所述操作请求关联的标记符,所述软件包含的每个操作响应的源代码均预先添加与自身所响应的操作请求关联的标记符;若所述源代码中包含与所述操作请求关联的标记符,则为所述目标操作响应所生成的日志记录添加所述uuid。通过这样设置,对应于同一个操作请求的日志记录将包含同一个uuid,从而能够获知哪些日志记录对应于同一个操作请求,为bug的定位和分析提供了帮助。
请参阅图2,本发明实施例中一种日志记录的生成方法的第二个实施例包括:
201、在软件的运行过程中,若接收到操作请求,则产生一个uuid;
步骤201与步骤101相同,具体可参照步骤101的相关说明。
202、将所述uuid写入一个全局变量内,并将所述全局变量存储至当前线程的上下文环境中;
在产生一个uuid之后,将产生的uuid写入一个全局变量内,并将所述全局变量存储至当前线程的上下文环境中,以便后续操作调用。
203、获取当前执行的目标操作响应的源代码;
204、检测所述源代码中是否包含与所述操作请求关联的标记符;
所述软件包含的每个操作响应的源代码均预先添加与自身所响应的操作请求关联的标记符;若所述源代码中包含与所述操作请求关联的标记符,则执行步骤205-206,否则执行步骤207。
205、从所述全局变量中提取出所述uuid;
206、将所述uuid添加至所述目标操作响应所生成的日志记录中;
所述源代码中包含与所述操作请求关联的标记符,此时需要将所述uuid添加到所述目标操作响应所生成的日志记录中,故可以从步骤202设置的全局变量中提取出所述uuid,然后将所述uuid添加至所述目标操作响应所生成的日志记录中。
207、不对所述目标操作响应所生成的日志记录做处理。
所述源代码中不含与所述操作请求关联的标记符,表明该目标操作响应不是对于所述操作请求的响应,此时不对所述目标操作响应所生成的日志记录做处理,即不添加uuid。
本发明实施例提出的日志记录的生成方法包括:在软件的运行过程中,若接收到操作请求,则产生一个uuid;将所述uuid写入一个全局变量内,并将所述全局变量存储至当前线程的上下文环境中;获取当前执行的目标操作响应的源代码;检测所述源代码中是否包含与所述操作请求关联的标记符;若所述源代码中包含与所述操作请求关联的标记符,则从所述全局变量中提取出所述uuid,将所述uuid添加至所述目标操作响应所生成的日志记录中。通过这样设置,对应于同一个操作请求的日志记录将包含同一个uuid,从而能够获知哪些日志记录对应于同一个操作请求,为bug的定位和分析提供了帮助。与本发明的第一个实施例相比,本实施例提出了一种为所述目标操作响应所生成的日志记录添加uuid的具体方式。
请参阅图3,本发明实施例中一种日志记录的生成方法的第三个实施例包括:
301、在软件的运行过程中,若接收到操作请求,则产生一个uuid;
302、获取当前执行的目标操作响应的源代码;
步骤301-302与步骤101-102相同,具体可参照步骤101-102的相关说明。
303、检测所述源代码中是否包含与所述操作请求关联的标记符;
所述软件包含的每个操作响应的源代码均预先添加与自身所响应的操作请求关联的标记符;若所述源代码中包含与所述操作请求关联的标记符,则执行步骤304-308,否则执行步骤309。
304、检测所述源代码包含的各个函数;
一个操作响应的步骤可能包含多个函数,可以对目标操作响应的源代码进行检测,找出其中包含的各个函数。
305、分别为检测到的每个函数添加日志注解;
在找出所述源代码包含的各个函数之后,分别为检测到的每个函数添加日志注解,所述日志注解为封装程序集、模块和类型的对象,本质为一个反射,通过编译可产生新的描述性的变量。
306、从所述各个函数中任意选取一个函数,并通过宏展开的方式为所述选取的函数生成额外的日志参数,所述日志参数包含所述uuid;
然后,从这些函数中任意选取一个函数,并通过宏展开的方式使得函数中的日志注解生成额外的日志参数,然后将产生的uuid添加到生成的日志参数中。
进一步的,除了uuid,还可以获取该函数的输入参数值以及返回值,并将输入参数值和返回值添加到该日志参数中。通过这样设置,产生的日志记录不仅包含uuid,还包含函数的输入参数值和返回值,从而可以更方便地定位和查找bug。
307、将所述日志参数传递至包含日志注解的每个函数当中;
这些日志参数会传递到所有添加了日志注解的函数中,具体的,系统会检测所有函数的代码,若发现某个函数添加有日志注解,则将步骤306产生的日志参数传递到该函数中。
308、当基于任意的一个目标函数生成日志记录时,将所述目标函数包含的日志参数添加至当前生成的日志记录中;
当基于任意的一个目标函数生成日志记录时,会将所述目标函数包含的日志参数添加至当前生成的日志记录中,从而使得产生的日志记录包含所述uuid。
进一步的,所述将所述目标函数包含的日志参数添加至当前生成的日志记录中可以包括:
(1)获取所述目标函数包含的日志注解的类型;
(2)若所述日志注解的类型符合预设的条件,则将所述目标函数包含的日志参数添加至当前生成的日志记录中。
比如,若某个函数的日志注解为@Nonlog,则该函数不会将日志参数添加到该函数的日志记录中。若某个函数的日志注解为@log,则该函数会将同步调用下的日志参数和返回值添加到该函数的日志记录中。若某个函数的日志注解为@futurelog,则该函数会将异步调用下的日志参数和返回值添加到该函数的日志记录中。
309、不对所述目标操作响应所生成的日志记录做处理。
所述源代码中不含与所述操作请求关联的标记符,表明该目标操作响应不是对于所述操作请求的响应,此时不对所述目标操作响应所生成的日志记录做处理,即不添加uuid。
本发明实施例提出的日志记录的生成方法包括:在软件的运行过程中,若接收到操作请求,则产生一个uuid;获取当前执行的目标操作响应的源代码;检测所述源代码中是否包含与所述操作请求关联的标记符;若所述源代码中包含与所述操作请求关联的标记符,则测所述源代码包含的各个函数;分别为检测到的每个函数添加日志注解;从所述各个函数中任意选取一个函数,并通过宏展开的方式为所述选取的函数生成额外的日志参数,所述日志参数包含所述uuid;将所述日志参数传递至包含日志注解的每个函数当中;当基于任意的一个目标函数生成日志记录时,将所述目标函数包含的日志参数添加至当前生成的日志记录中。通过这样设置,对应于同一个操作请求的日志记录将包含同一个uuid,从而能够获知哪些日志记录对应于同一个操作请求,为bug的定位和分析提供了帮助。与本发明的第二个实施例相比,本实施例提出了另一种为所述目标操作响应所生成的日志记录添加uuid的具体方式。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
上面主要描述了一种日志记录的生成方法,下面将对一种日志记录的生成装置进行详细描述。
请参阅图4,本发明实施例中一种日志记录的生成装置的一个实施例包括:
uuid产生模块401,用于在软件的运行过程中,若接收到操作请求,则产生一个uuid;
源代码获取模块402,用于获取当前执行的目标操作响应的源代码;
标记符检测模块403,用于检测所述源代码中是否包含与所述操作请求关联的标记符,所述软件包含的每个操作响应的源代码均预先添加与自身所响应的操作请求关联的标记符;
uuid添加模块404,用于若所述源代码中包含与所述操作请求关联的标记符,则为所述目标操作响应所生成的日志记录添加所述uuid。
进一步的,所述日志记录的生成装置还可以包括:
uuid存储模块,用于将所述uuid写入一个全局变量内,并将所述全局变量存储至当前线程的上下文环境中;
所述uuid添加模块可以包括:
uuid提取单元,用于从所述全局变量中提取出所述uuid;
uuid添加单元,用于将所述uuid添加至所述目标操作响应所生成的日志记录中。
进一步的,所述uuid添加模块可以包括:
函数检测单元,用于检测所述目标操作响应的源代码包含的各个函数;
日志注解添加单元,用于分别为检测到的每个函数添加日志注解,所述日志注解为封装程序集、模块和类型的对象,通过编译可产生新的描述性的变量;
函数选取单元,用于从所述各个函数中任意选取一个函数,并通过宏展开的方式为所述选取的函数生成额外的日志参数,所述日志参数包含所述uuid;
日志参数传递单元,用于将所述日志参数传递至包含日志注解的每个函数当中;
日志参数添加单元,用于当基于任意的一个目标函数生成日志记录时,将所述目标函数包含的日志参数添加至当前生成的日志记录中。
更进一步的,所述日志参数添加单元可以包括:
注解类型获取子单元,用于获取所述目标函数包含的日志注解的类型;
日志参数添加子单元,用于若所述日志注解的类型符合预设的条件,则将所述目标函数包含的日志参数添加至当前生成的日志记录中。
进一步的,所述日志记录的生成装置还可以包括:
uuid获取模块,用于获取输入的目标uuid;
日志记录搜索模块,用于从已生成的所有日志记录中搜索包含所述目标uuid的日志记录;
日志文件展示模块,用于将搜索到的日志记录整合成一份日志文件,并通过预设的方式展示所述日志文件。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可读指令,所述计算机可读指令被处理器执行时实现如图1至图3表示的任意一种日志记录的生成方法的步骤。
本发明实施例还提供一种服务器,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机可读指令,所述处理器执行所述计算机可读指令时实现如图1至图3表示的任意一种日志记录的生成方法的步骤。
图5是本发明一实施例提供的服务器的示意图。如图5所示,该实施例的服务器5包括:处理器50、存储器51以及存储在所述存储器51中并可在所述处理器50上运行的计算机可读指令52。所述处理器50执行所述计算机可读指令52时实现上述各个日志记录的生成方法实施例中的步骤,例如图1所示的步骤101至105。或者,所述处理器50执行所述计算机可读指令52时实现上述各装置实施例中各模块/单元的功能,例如图4所示模块401至404的功能。
示例性的,所述计算机可读指令52可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器51中,并由所述处理器50执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机可读指令段,该指令段用于描述所述计算机可读指令52在所述服务器5中的执行过程。
所述服务器5可以是智能手机、笔记本、掌上电脑及云端服务器等计算设备。所述服务器5可包括,但不仅限于,处理器50、存储器51。本领域技术人员可以理解,图5仅仅是服务器5的示例,并不构成对服务器5的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述服务器5还可以包括输入输出设备、网络接入设备、总线等。
所述处理器50可以是中央处理单元(CentraL Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(DigitaL SignaL Processor,DSP)、专用集成电路(AppLication Specific Integrated Circuit,ASIC)、现成可编程门阵列(FieLd-ProgrammabLe Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器51可以是所述服务器5的内部存储单元,例如服务器5的硬盘或内存。所述存储器51也可以是所述服务器5的外部存储设备,例如所述服务器5上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure DigitaL,SD)卡,闪存卡(FLash Card)等。进一步地,所述存储器51还可以既包括所述服务器5的内部存储单元也包括外部存储设备。所述存储器51用于存储所述计算机可读指令以及所述服务器所需的其他程序和数据。所述存储器51还可以用于暂时地存储已经输出或者将要输出的数据。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnLyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (8)

1.一种日志记录的生成方法,其特征在于,包括:
在软件的运行过程中,若接收到操作请求,则产生一个uuid;
获取当前执行的目标操作响应的源代码;
检测所述源代码中是否包含与所述操作请求关联的标记符,所述软件包含的每个操作响应的源代码均预先添加与自身所响应的操作请求关联的标记符;
若所述源代码中包含与所述操作请求关联的标记符,则为所述目标操作响应所生成的日志记录添加所述uuid;
其中,所述为所述目标操作响应所生成的日志记录添加所述uuid包括:
检测所述目标操作响应的源代码包含的各个函数;
分别为检测到的每个函数添加日志注解,所述日志注解为封装程序集、模块和类型的对象,通过编译可产生新的描述性的变量;
从所述各个函数中任意选取一个函数,并通过宏展开的方式为选取的函数生成额外的日志参数,所述日志参数包含所述uuid;
获取所述选取的函数的输入参数值以及返回值,并将所述输入参数值和所述返回值添加到所述日志参数中;
将所述日志参数传递至包含日志注解的每个函数当中;
当基于任意的一个目标函数生成日志记录时,将所述目标函数包含的日志参数添加至当前生成的日志记录中。
2.根据权利要求1所述的生成方法,其特征在于,在产生一个uuid之后,还包括:
将所述uuid写入一个全局变量内,并将所述全局变量存储至当前线程的上下文环境中;
所述为所述目标操作响应所生成的日志记录添加所述uuid包括:
从所述全局变量中提取出所述uuid;
将所述uuid添加至所述目标操作响应所生成的日志记录中。
3.根据权利要求1所述的生成方法,其特征在于,所述将所述目标函数包含的日志参数添加至当前生成的日志记录中包括:
获取所述目标函数包含的日志注解的类型;
若所述日志注解的类型符合预设的条件,则将所述目标函数包含的日志参数添加至当前生成的日志记录中。
4.根据权利要求1至3中任一项所述的生成方法,其特征在于,在为所述目标操作响应所生成的日志记录添加所述uuid之后,还包括:
获取输入的目标uuid;
从已生成的所有日志记录中搜索包含所述目标uuid的日志记录;
将搜索到的日志记录整合成一份日志文件,并通过预设的方式展示所述日志文件。
5.一种日志记录的生成装置,其特征在于,包括:
uuid产生模块,用于在软件的运行过程中,若接收到操作请求,则产生一个uuid;
源代码获取模块,用于获取当前执行的目标操作响应的源代码;
标记符检测模块,用于检测所述源代码中是否包含与所述操作请求关联的标记符,所述软件包含的每个操作响应的源代码均预先添加与自身所响应的操作请求关联的标记符;
uuid添加模块,用于若所述源代码中包含与所述操作请求关联的标记符,则为所述目标操作响应所生成的日志记录添加所述uuid;
其中,所述uuid添加模块包括:
函数检测单元,用于检测所述目标操作响应的源代码包含的各个函数;
日志注解添加单元,用于分别为检测到的每个函数添加日志注解,所述日志注解为封装程序集、模块和类型的对象,通过编译可产生新的描述性的变量;
函数选取单元,用于从所述各个函数中任意选取一个函数,并通过宏展开的方式为选取的函数生成额外的日志参数,所述日志参数包含所述uuid;
返回值添加单元,用于获取所述选取的函数的输入参数值以及返回值,并将所述输入参数值和所述返回值添加到所述日志参数中;
日志参数传递单元,用于将所述日志参数传递至包含日志注解的每个函数当中;
日志参数添加单元,用于当基于任意的一个目标函数生成日志记录时,将所述目标函数包含的日志参数添加至当前生成的日志记录中。
6.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可读指令,其特征在于,所述计算机可读指令被处理器执行时实现如权利要求1至4中任一项所述的生成方法的步骤。
7.一种服务器,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机可读指令,其特征在于,所述处理器执行所述计算机可读指令时实现如下步骤:
在软件的运行过程中,若接收到操作请求,则产生一个uuid;
获取当前执行的目标操作响应的源代码;
检测所述源代码中是否包含与所述操作请求关联的标记符,所述软件包含的每个操作响应的源代码均预先添加与自身所响应的操作请求关联的标记符;
若所述源代码中包含与所述操作请求关联的标记符,则为所述目标操作响应所生成的日志记录添加所述uuid;
其中,所述为所述目标操作响应所生成的日志记录添加所述uuid包括:
检测所述目标操作响应的源代码包含的各个函数;
分别为检测到的每个函数添加日志注解,所述日志注解为封装程序集、模块和类型的对象,通过编译可产生新的描述性的变量;
从所述各个函数中任意选取一个函数,并通过宏展开的方式为选取的函数生成额外的日志参数,所述日志参数包含所述uuid;
获取所述选取的函数的输入参数值以及返回值,并将所述输入参数值和所述返回值添加到所述日志参数中;
将所述日志参数传递至包含日志注解的每个函数当中;
当基于任意的一个目标函数生成日志记录时,将所述目标函数包含的日志参数添加至当前生成的日志记录中。
8.根据权利要求7所述的服务器,其特征在于,在产生一个uuid之后,还包括:
将所述uuid写入一个全局变量内,并将所述全局变量存储至当前线程的上下文环境中;
所述为所述目标操作响应所生成的日志记录添加所述uuid包括:
从所述全局变量中提取出所述uuid;
将所述uuid添加至所述目标操作响应所生成的日志记录中。
CN201910422571.7A 2019-05-21 2019-05-21 一种日志记录的生成方法、装置、存储介质和服务器 Active CN110245074B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910422571.7A CN110245074B (zh) 2019-05-21 2019-05-21 一种日志记录的生成方法、装置、存储介质和服务器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910422571.7A CN110245074B (zh) 2019-05-21 2019-05-21 一种日志记录的生成方法、装置、存储介质和服务器

Publications (2)

Publication Number Publication Date
CN110245074A CN110245074A (zh) 2019-09-17
CN110245074B true CN110245074B (zh) 2024-05-17

Family

ID=67884629

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910422571.7A Active CN110245074B (zh) 2019-05-21 2019-05-21 一种日志记录的生成方法、装置、存储介质和服务器

Country Status (1)

Country Link
CN (1) CN110245074B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110958149B (zh) * 2019-12-09 2022-08-16 南京富士通南大软件技术有限公司 一种自动聚合及展示OpenStack日志的方法
CN111143311B (zh) * 2019-12-13 2023-10-13 东软集团股份有限公司 应用间关联确定、日志关联搜索方法、装置、介质及设备
CN112084091B (zh) * 2020-09-09 2021-07-30 北京升鑫网络科技有限公司 一种系统行为审计方法、装置、终端及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107122290A (zh) * 2016-02-25 2017-09-01 阿里巴巴集团控股有限公司 日志信息的记录方法及装置
CN108459939A (zh) * 2018-01-08 2018-08-28 平安科技(深圳)有限公司 一种日志收集方法、装置、终端设备及存储介质
CN108958850A (zh) * 2018-06-29 2018-12-07 郑州云海信息技术有限公司 一种日志优化方法、装置、设备及计算机可读存储介质
CN109240665A (zh) * 2018-08-24 2019-01-18 北京北信源信息安全技术有限公司 日志记录方法、装置以及电子设备

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8352482B2 (en) * 2009-07-21 2013-01-08 Vmware, Inc. System and method for replicating disk images in a cloud computing based virtual machine file system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107122290A (zh) * 2016-02-25 2017-09-01 阿里巴巴集团控股有限公司 日志信息的记录方法及装置
CN108459939A (zh) * 2018-01-08 2018-08-28 平安科技(深圳)有限公司 一种日志收集方法、装置、终端设备及存储介质
CN108958850A (zh) * 2018-06-29 2018-12-07 郑州云海信息技术有限公司 一种日志优化方法、装置、设备及计算机可读存储介质
CN109240665A (zh) * 2018-08-24 2019-01-18 北京北信源信息安全技术有限公司 日志记录方法、装置以及电子设备

Also Published As

Publication number Publication date
CN110245074A (zh) 2019-09-17

Similar Documents

Publication Publication Date Title
CN110245074B (zh) 一种日志记录的生成方法、装置、存储介质和服务器
WO2015131804A1 (en) Call stack relationship acquiring method and apparatus
US10489124B2 (en) Method and system for providing software containers supporting executable code created from computational algorithms described in printed publications
US20160171104A1 (en) Detecting multistep operations when interacting with web applications
CN111797351A (zh) 页面数据管理方法、装置、电子设备及介质
US9471583B2 (en) Data race analysis with improved detection filtering
CN109271789A (zh) 恶意进程检测方法、装置、电子设备及存储介质
CN108399125B (zh) 自动化测试方法、装置、计算机设备和存储介质
CN107748772B (zh) 一种商标识别方法及装置
CN112199483B (zh) 信息录入辅助方法、装置、电子设备及存储介质
CN114116505A (zh) 代码测试方法及装置
CN111966630B (zh) 文件类型的检测方法、装置、设备和介质
CN110909155B (zh) 书单生成方法、计算设备及计算机存储介质
US20190265954A1 (en) Apparatus and method for assisting discovery of design pattern in model development environment using flow diagram
CN115794583A (zh) 一种内核分析方法及装置
CN111045983B (zh) 核电站电子文件管理方法、装置、终端设备及介质
CN114610386A (zh) H5与应用程序的交互方法、装置、设备及存储介质
CN111367750B (zh) 一种异常处理方法、装置及其设备
CN111078574A (zh) 生成影响分析报告的方法及装置
CN110704216A (zh) 用于终端的应用程序无响应检测方法、装置及电子设备
CN111078550A (zh) 软件测试方法及装置、计算机装置及存储介质
CN114818645B (zh) 基于数据主体的自动化报告生成方法、装置、设备及介质
CN113792326B (zh) 一种文件内容限制复制的方法及装置
CN112579242B (zh) 一种页面跳转关系分析方法、装置、设备及存储介质
US20240143474A1 (en) System and method for dynamic sensors support in ipmi stack

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