Publicação científica
An Exploratory Study of Log Placement Recommendation in an Enterprise System
O registro em log é uma prática de desenvolvimento que desempenha um papel importante nas operações e no monitoramento de sistemas complexos. Os desenvolvedores colocam instruções de log no código-fonte e usam dados de log para entender como o sistema se comporta na produção. Infelizmente, antecipar onde registrar durante o desenvolvimento é um desafio. Estudos anteriores mostram a viabilidade de aproveitar o aprendizado de máquina para recomendar a colocação de logs, apesar do desequilíbrio de dados, uma vez que o log é uma fração da base geral de código. No entanto, permanece desconhecido como essas técnicas se aplicam a um ambiente industrial e pouco se sabe sobre o efeito de dados desequilibrados e técnicas de amostragem.
Neste artigo, estudamos o problema de posicionamento de logs na base de código da Adyen, uma empresa de pagamentos em grande escala. Analisamos 34.526 arquivos Java e 309.527 métodos que somam +2 milhões de SLOC. Medimos sistematicamente a eficácia de cinco modelos com base em métricas de código, exploramos o efeito das técnicas de amostragem, entendemos quais recursos os modelos consideram relevantes para a previsão e avaliamos se podemos explorar 388.086 métodos de 29 projetos Apache para aprender onde fazer login em um ambiente industrial.
Nosso modelo de melhor desempenho atinge 79% de exatidão balanceada, 81% de precisão e 60% de recall. Embora as técnicas de amostragem melhorem a recuperação, elas penalizam a precisão a um custo proibitivo. Experimentos com dados de código aberto produzem modelos de baixo desempenho em relação ao conjunto de testes da Adyen; no entanto, são úteis devido à sua baixa taxa de falsos positivos. Nossos scripts e ferramentas de suporte estão disponíveis para a comunidade.
Assista a um resumo do artigo em inglês:
BibTeX:
@inproceedings{aniche-log-placement-recommendation,
author = "Jeanderson Cândido and Jan Haesen and Maurício Aniche and Arie van Deursen",
title = "An Exploratory Study of Log Placement Recommendation in an Enterprise System",
booktitle = "Proceedings of Mining Software Repositories Conference (MSR)",
year = 2021,
doi = "10.1109/MSR52588.2021.00027"
}