一种日志生成方法及装置与流程

文档序号:30494372发布日期:2022-06-22 03:28阅读:91来源:国知局
一种日志生成方法及装置与流程

1.本发明涉及计算机技术领域,具体涉及一种日志生成方法及装置。


背景技术:

2.应用程序日志是指应用程序在运行过程中生成的运行消息、警告或其他事件,往往根据开发人员的设定,在运行过程中的关键步骤或处理流程的起止位置,输出相关信息至特定文件,以此便于查看及分析统计等工作。现有技术中,为了生成日志,需要开发人员在编写代码时,在待输出日志的位置手动填入要输出的数据,根据手动填入的要输出的数据生成日志,当需要输出的日志中包含大量的数据时,需要投入大量的人力资源,由此可见,目前的日志生成方式方法繁琐,前期开发工作量较大。


技术实现要素:

3.因此,本发明要解决的技术问题在于克服现有技术中获取日志参数的方法繁琐,前期开发工作量较大的缺陷,从而提供一种日志生成方法及装置。
4.本发明第一方面提供了一种日志生成方法,包括:在应用程序调用目标方法时,获取预先定义的日志配置文件,日志配置文件包括日志输出格式和至少一个业务场景,业务场景中包括至少一个日志参数的参数获取方式;确定目标方法对应的业务场景,并根据目标方法对应的业务场景确定与各日志参数对应的目标参数获取方式;以目标参数获取方式获取日志参数;根据日志参数和日志输出格式生成目标日志。
5.可选地,在本发明提供的日志生成方法中,日志配置文件还包括默认参数配置,默认参数配置用于指定日志参数的默认获取方式,日志生成方法还包括:对于与目标方法对应的业务场景中未定义参数获取方式的日志参数,通过默认参数配置获取日志参数。
6.可选地,在本发明提供的日志生成方法中,业务场景中的各日志参数的参数获取方式对应有各日志参数的参数名称,日志输出格式中包括多个日志参数的参数名称,根据日志参数和日志输出格式生成目标日志的步骤包括:根据获取日志参数的目标参数获取方式对应的参数名称和日志格式中的参数名称完成日志参数的装配,生成目标日志。
7.可选地,在本发明提供的日志生成方法中,日志配置文件中的各业务场景包括各业务场景的场景名称,目标方法与日志配置文件中的业务场景通过业务场景的场景名称关联。
8.可选地,本发明提供的日志生成方法还包括:将目标日志输出至日志文件。
9.本发明第二方面提供了一种日志生成装置,包括:配置文件获取模块,在应用程序调用目标方法时,配置文件获取模块用于获取预先定义的日志配置文件,日志配置文件包括日志输出格式和至少一个业务场景,业务场景中包括至少一个日志参数的参数获取方式;日志参数获取方式确定模块,用于确定目标方法对应的业务场景,并根据目标方法对应的业务场景确定与各日志参数对应的目标参数获取方式;第一日志参数获取模块,用于以目标参数获取方式获取日志参数;日志生成模块,用于根据日志参数和日志输出格式生成
目标日志。
10.可选地,在本发明提供的日志生成装置中,日志配置文件还包括默认参数配置,默认参数配置用于指定日志参数的默认获取方式,日志生成装置还包括:第二日志参数获取模块,用于通过默认参数配置获取日志参数。
11.本发明第三方面提供了一种计算机设备,包括:至少一个处理器;以及与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,从而执行如本发明第一方面提供的日志生成方法。
12.本发明第四方面提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机指令,计算机指令用于使计算机执行如本发明第一方面提供的日志生成方法。
13.本发明技术方案,具有如下优点:
14.本发明提供的日志生成方法,日志参数通过日志配置文件中与目标方法相对应的业务场景的目标参数获取方式自动获取,然后根据日志配置文件中的日志输出格式和自动获取到的日志参数可生成目标日志,开发人员在编写代码时,只需定义日志输出格式,以及在业务场景中填入日志参数的目标参数获取方式,通过目标参数获取方式可以自动获取日志参数,无需在每一个目标方法中都手动填入要输出的数据,减少了前期开发的工作量。
附图说明
15.为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
16.图1为本发明实施例中提供的日志配置文件的示例代码;
17.图2为本发明实施例中日志生成方法的一个具体示例的流程图;
18.图3为本发明实施例中日志生成方法的另一具体示例的流程图;
19.图4为本发明实施例中日志生成装置的一个具体示意的原理框图;
20.图5为本发明实施例中日志生成装置的另一具体示意的原理框图;
21.图6为本发明实施例中计算机设备的示意框图;
具体实施方式
22.下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
23.在本发明的描述中,需要说明的是,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
24.此外,下面所描述的本发明不同实施方式中所涉及的技术特征只要彼此之间未构成冲突就可以相互结合。
25.实施例1
26.本发明实施例提供了一种日志配置文件,如图1所示,日志配置文件包括:至少一个业务场景,业务场景包括场景名称以及业务场景中的日志参数的参数获取方式。
27.在图1所示的日志配置文件中,“interfaceconfig”表示自定义场景配置,在图1所示的日志配置文件中,自定义场景配置中包括两个业务场景,名称分别为“scene_first”和“scene_second”,以名称为“scene_first”的业务场景为例,该业务场景中定义了两个日志参数的获取方式,两个日志参数的参数名分别为“log_e”和“log_h”,以参数名为“log_e”的日志参数为例,在名称为“scene_first”的业务场景中,通过“fetchtype”定义了该参数的捕获方式为方法名获取(methodsname),通过“fetchconfig”定义该日志参数的获取方式,其中,type表示参数类型,req表示该参数的参数类型为请求对象参数,index表示捕获参数的位置,1代表获取第一个参数,names表示获取对象参数使用的方法,getinstgid表示获取参数instgid的值。
28.综上所述,在参数“log_e”中,
29.fetchtype:methodsname
30.type:req
31.index:1
32.names:getinstgid
33.表示:以【方法名方式】获取【请求参数】中【第一个】参数中【instgid】的值,并写入log_e。
34.在一具体实施例中,参数的捕获方式除方法名获取外,还可以为耗时、字符串、整数、异常信息获取等。参数类型还可以为静态值(static)、响应参数对象(resp)等。获取对象参数使用的方法支持对象参数嵌套,以“.”连接,如geta.getb代表获取对象a参数中的参数b的值。
35.上述对日志参数的获取方式仅为举例说明,在一具体实施例中,对日志参数的获取支持静态方法、字符串、整数、自动耗时统计、读取文件中内容、调用参数对象方法获取返回值等多种方式。
36.在一可选实施例中,本发明实施例提供的日志配置文件还包括默认参数配置,在图1所示的日志配置文件中,“defaulconfig”表示默认参数配置,默认参数配置包括各日志参数的参数获取方式,在图1所示的默认参数配置中,包括四个名称分别为“date_time”、“log_a”、“log_b”、“cost”、“log_d”的日志参数的参数获取方式。以参数名为“date_time”的日志参数为例,在默认参数配置中,通过“fetchtype”定义了该参数的获取方式为通过方法名获取。通过“fetchconfig”定义该日志参数的获取方式为:
37.type:static
38.names:com.*.timeutil.getnowdatetimestring
39.表示通过链接“com.*.timeutil.getnowdatetimestring”提供的方法静态获取日志参数“date_time”。
40.在一可选实施例中,本发明实施例提供的日志配置文件还包括日志输出格式,日志输出格式用于编排各参数输出顺序及输出格式,在获取日志参数后,根据定义的日志输出格式输出各日志参数,在如图1所示的日志配置文件中,日志输出格式为“date_time|log_id|cost|log_a|log_b|log_c|log_d|log_e|log_f|log_g|log_h|log_i|”,表示日志输出格式的编排为“时间|跟踪号|耗时|自动字段a|自动字段b...”,每两个日志参数通过符号“|”进行分隔。
41.在一可选实施例中,本发明实施例提供的日志配置文件还包括默认参数,如图1所示的日志配置文件中,通过“fieldmaxlength”定义了日志参数的单字段最大长度为1000,通过“defaultemptyvalue”定义了日志参数字段默认值为
“”
(也即是默认值为空格),即,若自定义参数配置和默认参数配置中都没有定义某一日志参数的值或日志参数值的获取方式,则输出
“”
(也即是默认值为空格),通过“separator”定义日志参数字段间的分隔符为“|”。以上皆为举例说明,在实际应用中,可根据实际需求设置不同的默认参数。
42.本发明实施例提供的日志配置文件,包含自定义配置参数,设置了不同的业务场景,在不同业务场景中自定义了不同日志参数以及不同日志参数的获取方式,使同一日志配置文件适用于不同的执行业务逻辑的目标方法,无需对每一个目标方法都设置一个配置文件,减小了开发工作量。并且,在本发明实施例提供的日志配置文件中还包括默认配置参数,对于获取方式相同或取值相同的日志参数,可以通过默认配置参数获取,无需对取值相同的或获取方式相同的日志参数进行重复填写,减小了工作量。
43.实施例2
44.本发明实施例提供了一种日志生成方法,如图2所示,包括:
45.步骤s10:在应用程序调用目标方法时,获取预先定义的日志配置文件,日志配置文件包括日志输出格式和至少一个业务场景,业务场景中包括至少一个日志参数的参数获取方式。目标方法与目标场景相关联,用于执行与目标场景相对应的业务的逻辑。对日志输出格式、业务场景、以及业务场景中定义的日志参数的参数获取方式的详细描述见上述实施例1,在此不再赘述。
46.在一具体实施例中,为了能够在应用程序调用目标方法时快速获取日志配置文件,并从根据日志配置文件生成目标日志,可以基于面向切面与反射等技术监控与日志配置文件相关联的目标方法,在目标方法被触发后,根据日志配置文件自动完成日志参数的获取、装配和输出。
47.步骤s20:确定目标方法对应的业务场景,并根据目标方法对应的业务场景确定与各日志参数对应的目标参数获取方式。
48.在一具体实施例中,为了在应用程序调用目标方法时,快速确定日志配置文件中与目标方法相对应的业务场景,可以通过业务场景的标识信息将目标方法与业务场景相关联,使得应用程序调用目标方法时,可以根据与目标方法相关联的标识信息确定业务场景。示例性地,可以将业务场景的标识信息以注解的形式放到与目标方法相关联的代码上完成目标方法与业务场景的关联,程序在运行过程中调用目标方法时,便会自动触发业务场景。
49.在一可选实施例中,日志配置文件中的各业务场景包括各业务场景的场景名称,各业务场景的场景名称不同,可以以各业务场景的场名称作为各业务场景的标识信息,实现业务场景与目标方法的关联。
50.步骤s30:以目标参数获取方式获取日志参数。
51.在一具体实施例中,目标日志参数获取方式可以是用于获取日志参数的获取程序,获取各日志参数对应的目标参数获取方式即是获取各日志参数的获取程序,通过运行该获取程序可自动获取日志参数。对日志参数的获取支持静态方法、字符串、整数、自动耗时统计、读取文件中内容、调用参数对象方法获取返回值等多种方式。获取日志参数的方式见上述实施例1中对日志配置文件的描述,在此不再赘述。
52.步骤s40:根据日志参数和日志输出格式生成目标日志。
53.在本发明实施例中,根据业务场景中设定好的目标参数获取方式完成具体参数值的获取,之后按照日志配置文件定义的输出格式,将具体参数值对应装填到格式位置之中,完成日志参数的装配,生成目标日志。
54.在一可选实施例中,业务场景中的各日志参数的参数获取方式对应有各日志参数的参数名称,日志输出格式中包括多个日志参数的参数名称。
55.执行上述步骤s40时,可以根据获取日志参数的目标参数获取方式对应的参数名称和日志格式中的参数名称完成日志参数的装配,生成目标日志。具体地,可以根据获取各日志参数所使用的参数获取方式对应的参数名称,将日志参数填入日志输出格式中与获取各日志参数所使用的参数获取方式具有相同名称的位置,生成目标日志。
56.本发明实施例提供的日志生成方法,日志参数通过日志配置文件中与目标方法相对应的业务场景的目标参数获取方式自动获取,然后根据日志配置文件中的日志输出格式和自动获取到的日志参数可生成目标日志,开发人员在编写代码时,只需定义日志输出格式,以及在业务场景中填入日志参数的目标参数获取方式,通过目标参数获取方式可以自动获取日志参数,无需在每一个目标方法中都手动填入要输出的数据,减少了前期开发的工作量。
57.在一可选实施例中,日志配置文件还包括默认参数配置,默认参数配置用于指定日志参数的默认获取方式,详细描述见上述实施例1中对默认参数配置的描述。如图3所示,日志生成方法还包括:
58.步骤s50:判断业务场景中是否定义日志参数的获取方式,若业务场景中定义了日志参数的获取方式,则执行上述步骤s30,若未定义,则执行步骤s51。
59.步骤s51:通过默认参数配置获取日志参数。默认参数配置用于定义所有目标场景通用的日志参数的值或日志参数的获取方法,在日志配置文件中定义默认参数配置,避免了对相同的参数内容进行反复填写。
60.在具体实施例中,日志输出格式中定义有待输出的日志参数,若业务场景中定义有待输出的日志参数的获取方式,则通过业务场景中定义的获取方式获取待输出的日志参数的值,若存在未在业务场景中定义获取方式的待输出的日志参数,则通过默认参数配置中定义的日志参数的值或日志参数的获取方法获取未在业务场景中定义获取方式的待输出的日志参数的值。
61.在一可选实施例中,若与目标方法对应的业务场景和默认参数配置中都定义有同一日志参数的值或获取方式,则优先根据自定义场景配置中的定义获取日志参数。
62.在一可选实施例中,在执行上述步骤s40生成目标日志后,还包括如下步骤:
63.将目标日志输出至日志文件。在具体实施例中,也可以将日志文件的位置存储于日志配置文件中,通过预先存储的日志文件的位置将目标日志输出到指定位置。
64.在一可选实施例中,在本发明实施例提供的日志生成方法中,通过如下步骤生成日志配置文件:
65.首先,获取不同业务场景对应的参数获取方式以及日志输出格式。关于参数获取方式和日志输出格式的详细内容见上述实施例1中对日志配置文件的描述,在此不再赘述。
66.然后,根据不同业务场景对应的参数获取方式和日志输出格式生成日志配置文
件。具体实施例中,生成的日志配置文件参见图1。
67.实施例3
68.本发明实施例提供了一种日志生成装置,如图4所示,包括:
69.配置文件获取模块10,在应用程序调用目标方法时,配置文件获取模块10用于获取预先定义的日志配置文件,日志配置文件包括日志输出格式和至少一个业务场景,业务场景中包括至少一个日志参数的参数获取方式,详细内容见上述实施例1中对步骤s10的描述。
70.日志参数获取方式确定模块20,用于确定目标方法对应的业务场景,并根据目标方法对应的业务场景确定与各日志参数对应的目标参数获取方式,详细内容见上述实施例1中对步骤s20的描述。
71.第一日志参数获取模块30,用于以目标参数获取方式获取日志参数,详细描述见上述实施例1中对步骤s30的描述。
72.日志生成模块40,用于根据日志参数和日志输出格式生成目标日志,详细描述见上述实施例1中对步骤s40的描述。
73.本发明实施例提供的日志生成装置,日志参数通过日志配置文件中与目标方法相对应的业务场景的日志参数获取方式自动获取,然后根据日志配置文件中的日志输出格式和自动获取到的日志参数可生成目标日志,开发人员在编写代码时,只需定义日志输出格式,以及在业务场景中填入日志参数的目标参数获取方式,通过目标参数获取方式可以自动获取日志参数,无需在每一个目标方法中都手动填入要输出的数据,减少了前期开发的工作量。
74.在一可选实施例中,日志配置文件还包括默认参数配置,如图5所示,默认参数配置用于指定日志参数的默认获取方式,日志生成装置还包括:
75.第二日志参数获取模块50,若业务场景中未定义日志参数的获取方式,第二日志参数获取模块50用于通过默认参数配置获取日志参数,详细内容见上述实施例1中对步骤s50、步骤s51的描述。
76.实施例3
77.本发明实施例提供一种计算机设备,如图6所示,该计算机设备主要包括一个或多个处理器71以及存储器72,图6中以一个处理器71为例。
78.该计算机设备还可以包括:输入装置73和输出装置74。
79.处理器71、存储器72、输入装置73和输出装置74可以通过总线或者其他方式连接,图6中以通过总线连接为例。
80.处理器71可以为中央处理器(central processing unit,cpu)。处理器71还可以为其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等芯片,或者上述各类芯片的组合。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。存储器72可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据日志生成装置的使用所创建的数据等。此外,存储器72可以包括高速随机存取存储器,还可以包括
非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施例中,存储器72可选包括相对于处理器71远程设置的存储器,这些远程存储器可以通过网络连接至日志生成装置。输入装置73可接收用户输入的计算请求(或其他数字或字符信息),以及产生与日志生成装置有关的键信号输入。输出装置74可包括显示屏等显示设备,用以输出计算结果。
81.实施例4
82.本发明实施例提供一种计算机可读存储介质,该计算机可读存储介质存储计算机指令,计算机存储介质存储有计算机可执行指令,该计算机可执行指令可执行上述任意方法实施例中的日志生成方法。其中,存储介质可为磁碟、光盘、只读存储记忆体(read-only memory,rom)、随机存储记忆体(random access memory,ram)、快闪存储器(flash memory)、硬盘(hard disk drive,缩写:hdd)或固态硬盘(solid-state drive,ssd)等;存储介质还可以包括上述种类的存储器的组合。
83.显然,上述实施例仅仅是为清楚地说明所作的举例,而并非对实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。而由此所引伸出的显而易见的变化或变动仍处于本发明创造的保护范围之中。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1