Logging is a popular practice in software development, and engineers often rely on it for several purposes (e.g., debugging, performance monitoring, and root cause analysis). Unfortunately, logging is challenging. Previous research highlights that, in practice, developers often spend time implementing and maintaining log statements in a trial-and-error basis [1], [2], [3]. Furthermore, improper logging leads to several problems that hinders the use of log data (e.g., overwhelming volume of data and missing information) [4]. How can one determine the utility of a log statement at development time?
Researchers have been proposing techniques to help developers to make informed decisions (e.g., where to log [5], [6], [7], which variables to log [8], which log level to use [9]). Machine learning is a good fit in this domain since it can learn patterns of logging code that are complex/unfeasible to encode in a traditional static analyzer.
In this session, we will be focus in the log placement problem, i.e., “where to log”. Concretely, we will discuss a state-of-the-art technique based on Deep Learning [7]. This paper introduces a step forward from LogAdvisor [6], a former technique based on traditional machine learning and feature engineering. You are welcome to check the LogAdvisor paper for more historical background (but keep in mind it is not required for this session).
The course contents are copyrighted (c) 2018,2019,2020 - onwards by TU Delft and their respective authors and licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International license.