【技术实现步骤摘要】
一种针对日志记录的变量推荐方法
[0001]本专利技术涉及日志挖掘
,更特别地说,是指一种针对日志记录的变量推荐方法。
技术介绍
[0002]参见图1所示的自动日志分析流程图中,软件运行(即运行源代码)时通过日志生成子系统产生日志(log),所述日志在日志压缩子系统中被压缩,输出压缩后日志;日志解析子系统中可以对所述日志或所述压缩后日志解析为日志模板集;最后在日志挖掘子系统中挖掘日志特征。通常来说,日志(log)由三部分组成—日志级别,静态(语境化)文本和动态内容(日志变量所记录的软件运行时状态)。一些实证研究表明,在研究的开源系统中,超过25%的日志语句更改与记录的变量相关。一方面,在日志记录语句(logging statement)里记录太多的日志变量(log variable)可能会导致性能开销以及阻止开发者放大(或聚焦)在真正的问题上。另一方面,缺少记录重要的日志变量(log variable)会增加开发人员执行许多纠正性软件维护任务的负担。例如,开发人员可能无法很好地理解影响已部署系统的问题的根本原因,因为没有统一的记录日志的日志变量(log variable)工具。这突出表明需要一种工具,可以为开发人员推荐日志变量(log variable),以帮助他们编写高质量的日志记录语句(logging statement)。参见图2所示,运行的源代码中至少存在有日志记录语句(logging statement),所述的日志记录语句中可能会存在有日志变量(log variable)。从日志(log)中表征的日 ...
【技术保护点】
【技术特征摘要】
1.一种针对日志记录的变量推荐方法,其特征在于包括下列步骤:步骤一,从源代码中获取每个代码段中标志对应的标签;步骤11,从源代码中获取日志记录语句及对应的代码段;从源代码中获取日志记录语句集,记为LS={ls1,ls2,
…
,ls
n
,
…
,ls
N
};每一个日志记录语句ls对应一个代码段cs,则有代码段集合,记为CS={cs1,cs2,
…
,cs
n
,
…
,cs
N
};ls1表示第一个日志记录语句;ls2表示第二个日志记录语句;ls
n
表示第n个日志记录语句;ls
N
表示最后一个日志记录语句;cs1表示ls1对应的代码段,即第一个代码段;cs2表示ls2对应的代码段,即第二个代码段;cs
n
表示ls
n
对应的代码段,即第n个代码段;cs
N
表示ls
N
对应的代码段,即最后一个代码段;步骤12,制定日志变量提取规则;日志变量提取规则集记为RULE={rule1,rule2,
…
,rule
γ
};rule1表示第一个日志变量提取规则;rule2表示第二个日志变量提取规则;rule
γ
表示最后一个日志变量提取规则;步骤13,提取日志记录语句中的日志变量;日志记录语句ls1依据RULE={rule1,rule2,
…
,rule
γ
}来提取得到的日志变量集记为且下角标g为ls1中日志变量的总个数;日志记录语句ls2依据RULE={rule1,rule2,
…
,rule
γ
}来提取得到的日志变量集记为且下角标h为ls2中日志变量的总个数;日志记录语句ls
n
依据RULE={rule1,rule2,
…
,rule
γ
}来提取日志变量,得到的日志变量集记为且下角标δ为ls
n
中日志变量的总个数;日志记录语句ls
N
依据RULE={rule1,rule2,
…
,rule
γ
}来提取得到的日志变量集记为且下角标u为ls
N
中日志变量的总个数;表示ls1的第一个日志变量;表示ls1的第二个日志变量;表示ls1的最后一个日志变量;表示ls2的第一个日志变量;表示ls2的第二个日志变量;
表示ls2的最后一个日志变量;表示ls
n
的第一个日志变量;表示ls
n
的第二个日志变量;表示ls
n
的最后一个日志变量;表示ls
N
的第一个日志变量;表示ls
N
的第二个日志变量;表示ls
N
的最后一个日志变量;步骤14,确定代码段中每个标志对应的标签;多个标志token组成了一个代码段cs;属于cs1的标志集记为则有:在代码段cs1中任意一个标志的标签,记为当所述存在于所述中,则对应的为日志变量;当所述不存在于所述中,则对应的不是日志变量;属于cs2的标志集记为则有:在代码段cs2中任意一个标志的标签,记为当所述存在于所述中,则对应的为日志变量;当所述不存在于所述中,则对应的不是日志变量;属于cs
n
的标志集记为在代码段cs
n
中任意一个标志的标签,记为当所述存在于所述中,则对应的为日志变量;当所述不存在于所述中,则对应的不是日志变量;属于cs
N
的标志集记为在代码段cs
N
中任意一个标志的标签,记为当所述存在于所述中,则对应的为日志变量;当所述不
存在于所述中,则对应的不是日志变量;表示cs
n
中的第一个标志;表示cs
n
中的第二个标志;表示cs
n
中的第y个标志;表示cs
n
中的最后一个标志;表示cs
N
中的第一个标志;表示cs
N
中的第二个标志;表示cs
N
中的第b个标志;表示cs
N
中的最后一个标志;统计代码段集合CS={cs1,cs2,
…
,cs
n
,
…
,cs
N
}中各个代码段的标志集,记为源代码段标志集步骤二,构建代码段异构图;步骤21,代码段集的随机选取;从CS={cs1,cs2,
…
,cs
n
,
…
,cs
N
}中随机选取70%的代码段记为训练代码段集TCS={tcs1,tcs2,
…
,tcs
α
,
…
,tcs
β
};从中随机选取70%的标志集记为训练标志集TCS与TTKK为一一对应选取;tcs1表示选取的第一个代码段;tcs2表示选取的第二个代码段;tcs
α
表示选取的第α个代码段;tcs
β
表示选取的第β个代码段;表示从TKK中选取的对应于tcs1的训练标志集;表示从TKK中选取的对应于tcs2的...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。