A Comprehensive Survey of Logging in Software: From Logging Statements
  Automation to Log Mining and Analysis
  Logs are widely used to record runtime information of software systems, such
as the timestamp and the importance of an event, the unique ID of the source of
the log, and a part of the state of a task's execution. The rich information of
logs enables system developers (and operators) to monitor the runtime behaviors
of their systems and further track down system problems and perform analysis on
log data in production settings. However, the prior research on utilizing logs
is scattered and that limits the ability of new researchers in this field to
quickly get to the speed and hampers currently active researchers to advance
this field further. Therefore, this paper surveys and provides a systematic
literature review and mapping of the contemporary logging practices and log
statements' mining and monitoring techniques and their applications such as in
system failure detection and diagnosis. We study a large number of conference
and journal papers that appeared on top-level peer-reviewed venues.
Additionally, we draw high-level trends of ongoing research and categorize
publications into subdivisions. In the end, and based on our holistic
observations during this survey, we provide a set of challenges and
opportunities that will lead the researchers in academia and industry in moving
the field forward.
