企业系统中日志放置推荐方法的探索性研究
软件工程
2021-03-11 v3 机器学习
摘要
日志是一种开发实践,在复杂系统的运行与监控中扮演重要角色。开发人员在源代码中放置日志语句,并利用日志数据理解系统在生产环境中的行为。遗憾的是,在开发期间预判何处需要日志颇具挑战。先前的研究显示了尽管存在数据不平衡(因为日志仅占整体代码库的一小部分),利用机器学习推荐日志放置的可行性。然而,这些技术如何应用于工业环境仍属未知,且关于不平衡数据与采样技术的影响知之甚少。在本文中,我们研究了大型支付公司 Adyen 代码库中的日志放置问题。我们分析了 34,526 个 Java 文件和 309,527 个方法,总计超过 200 万源代码行(SLOC)。我们基于代码度量系统度量了五种模型的有效性,探索了采样技术的影响,理解了模型认为与预测相关的特征,并评估了是否能利用来自 29 个 Apache 项目的 388,086 个方法来学习工业环境中的日志放置位置。我们性能最佳的模型取得了 79% 的平衡准确率、81% 的精确率和 60% 的召回率。尽管采样技术提升了召回率,却以过高代价损害了精确率。使用开源数据的实验在 Adyen 测试集上表现欠佳;尽管如此,由于其低误报率,它们仍具用处。我们向社区提供了支撑性的脚本与工具。
引用
@article{arxiv.2103.01755,
title = {An Exploratory Study of Log Placement Recommendation in an Enterprise System},
author = {Jeanderson Cândido and Jan Haesen and Maurício Aniche and Arie van Deursen},
journal= {arXiv preprint arXiv:2103.01755},
year = {2021}
}