skip to main content
research-article

A Survey of Software Log Instrumentation

Published:03 May 2021Publication History
Skip Abstract Section

Abstract

Log messages have been used widely in many software systems for a variety of purposes during software development and field operation. There are two phases in software logging: log instrumentation and log management. Log instrumentation refers to the practice that developers insert logging code into source code to record runtime information. Log management refers to the practice that operators collect the generated log messages and conduct data analysis techniques to provide valuable insights of runtime behavior. There are many open source and commercial log management tools available. However, their effectiveness highly depends on the quality of the instrumented logging code, as log messages generated by high-quality logging code can greatly ease the process of various log analysis tasks (e.g., monitoring, failure diagnosis, and auditing). Hence, in this article, we conducted a systematic survey on state-of-the-art research on log instrumentation by studying 69 papers between 1997 and 2019. In particular, we have focused on the challenges and proposed solutions used in the three steps of log instrumentation: (1) logging approach; (2) logging utility integration; and (3) logging code composition. This survey will be useful to DevOps practitioners and researchers who are interested in software logging.

References

  1. Apache Software Foundation. 2020. Apache Commons Logging. Retrieved from https://commons.apache.org/proper/commons-logging/.Google ScholarGoogle Scholar
  2. Azure. 2020. Azure security logging and auditing. Retrieved from https://docs.microsoft.com/en-us/azure/security/fundamentals/log-audit.Google ScholarGoogle Scholar
  3. AWS. 2020. Centralized Logging. Retrieved from https://aws.amazon.com/solutions/implementations/centralized-logging.Google ScholarGoogle Scholar
  4. Baeldung. 2020. Comparing Spring AOP and AspectJ. Retrieved from https://www.baeldung.com/spring-aop-vs-aspectj.Google ScholarGoogle Scholar
  5. Datadog. 2020. Datadog. Retrieved from https://datadoghq.com.Google ScholarGoogle Scholar
  6. Elastic. 2020. Elastic. Retrieved from https://www.elastic.co.Google ScholarGoogle Scholar
  7. Gartner. 2014. Gartner 2014 SIEM Magic Quadrant Leadership Report. Retrieved from http://www.gartner.com/document/2780017.Google ScholarGoogle Scholar
  8. Google. 2020. Google Cloud Operation. Retrieved from https://cloud.google.com/products/operations.Google ScholarGoogle Scholar
  9. Apache Software Foundation. 2020. HBASE-750: NPE caused by StoreFileScanner.updateReaders. Retrieved from https://issues.apache.org/jira/browse/HBASE-750/.Google ScholarGoogle Scholar
  10. Jaeger. 2020. Jaeger Tracing. Retrieved from http://www.jaegertracing.io.Google ScholarGoogle Scholar
  11. Kibana. 2020. Kibana. Retrieved from https://www.elastic.co/kibana.Google ScholarGoogle Scholar
  12. Lightstep. 2020. Lightstep. Retrieved from https://lightstep.com.Google ScholarGoogle Scholar
  13. Apache Software Foundation. 2020. Log4J. Retrieved from http://logging.apache.org/log4j/1.2.Google ScholarGoogle Scholar
  14. Apache Software Foundation. 2020. LOG4J 2 Apache Log4j 2. Retrieved from http://logging.apache.org/log4j/2.x.Google ScholarGoogle Scholar
  15. LogStash. 2020. logstash - open source log management. Retrieved from http://logstash.net/.Google ScholarGoogle Scholar
  16. OpenCensus. 2020. OpenCensus. Retrieved from https://opencensus.io/.Google ScholarGoogle Scholar
  17. Dzone. 2020. Overview of Spring Aspect Oriented Programming (AOP). Retrieved from https://dzone.com/articles/overview-of-spring-aspect-oriented-programming-aop.Google ScholarGoogle Scholar
  18. Boyuan Chen. 2021. The replication package. Retrieved from https://www.eecs.yorku.ca/∼chenfsd/resources/survey.zip.Google ScholarGoogle Scholar
  19. SLF4J. 2020. Simple Logging Facade for Java (SLF4J). Retrieved from https://www.slf4j.org/.Google ScholarGoogle Scholar
  20. GitHub. 2020. spdlog - Very fast, header-only/compiled, C++ logging library.Retrieved from https://github.com/gabime/spdlog.Google ScholarGoogle Scholar
  21. Splunk. 2020. Splunk. Retrieved from http://www.splunk.com/.Google ScholarGoogle Scholar
  22. Sarbanes-Oxley Act. 2002. Summary of Sarbanes-Oxley Act of 2002. Retrieved from http://www.soxlaw.com/.Google ScholarGoogle Scholar
  23. UBC. 2020. The AspectC Project. Retrieved from https://www.cs.ubc.ca/labs/spl/projects/aspectc.html.Google ScholarGoogle Scholar
  24. Apache Software Foundation. 2020. The JavaDoc of Log4J 2. Retrieved from https://logging.apache.org/log4j/2.x/log4j-api/apidocs/org/apache/logging/log4j/Level.html.Google ScholarGoogle Scholar
  25. Zipkin. 2020. Zipkin. Retrieved from https://zipkin.io/.Google ScholarGoogle Scholar
  26. Sepehr Amir-Mohammadian, Stephen Chong, and Christian Skalka. 2016. Correct audit logging: Theoryl. In Proceedings of the 5th International Conference on Principles of Security and Trust , Held as Part of the European Joint Conferences on Theory and Practice of Software. 139--162.Google ScholarGoogle Scholar
  27. Sven Apel and Don Batory. 2008. How AspectJ is used: An analysis of eleven Aspectj programs. J. Obj. Technol. 9, 1 (2008).Google ScholarGoogle Scholar
  28. Fabio Baccanico, Gabriella Carrozza, Marcello Cinque, Domenico Cotroneo, Antonio Pecchia, and Agostino Savignano. 2014. Event logging in an industrial development process: Practices and reengineering challenges. In Proceedings of the 25th IEEE International Symposium on Software Reliability Engineering Workshops.Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. Paul Barham, Austin Donnelly, Rebecca Isaacs, and Richard Mortier. 2004. Using Magpie for request extraction and workload modelling. In Proceedings of the 6th Symposium on Operating System Design and Implementation. 259--272.Google ScholarGoogle Scholar
  30. Paul Barham, Rebecca Isaacs, Richard Mortier, and Dushyanth Narayanan. 2003. Magpie: Online modelling and performance-aware systems. In Proceedings of the 9th Workshop on Hot Topics in Operating Systems. 85--90.Google ScholarGoogle Scholar
  31. Titus Barik, Robert DeLine, Steven M. Drucker, and Danyel Fisher. 2016. The bones of the system: A case study of logging and telemetry at Microsoft. In Proceedings of the 38th International Conference on Software Engineering. 92--101.Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. Marc Bartsch and Rachel Harrison. 2008. An exploratory study of the effect of aspect-oriented programming on maintainability. Softw. Qual. J. 16, 1 (2008), 23--44.Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. Moritz Beller, Radjino Bholanath, Shane McIntosh, and Andy Zaidman. 2016. Analyzing the state of static analysis: A large-scale evaluation in open source software. In Proceedings of the IEEE 23rd International Conference on Software Analysis, Evolution, and Reengineering. 470--481.Google ScholarGoogle ScholarCross RefCross Ref
  34. Lionel C. Briand, Wojciech J. Dzidek, and Yvan Labiche. 2005. Instrumenting contracts with aspect-oriented programming to increase observability and support debugging. In Proceedings of the 21st IEEE International Conference on Software Maintenance. 687--690.Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. Magiel Bruntink, Arie van Deursen, and Tom Tourwé. 2005. Isolating idiomatic crosscutting concerns. In Proceedings of the 21st IEEE International Conference on Software Maintenance. 37--46.Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. Rajkumar Buyya, Satish Narayana Srirama, Giuliano Casale, Rodrigo N. Calheiros, Yogesh Simmhan, Blesson Varghese, Erol Gelenbe, Bahman Javadi, Luis Miguel Vaquero, Marco A. S. Netto, Adel Nadjaran Toosi, Maria Alejandra Rodriguez, Ignacio Martín Llorente, Sabrina De Capitani di Vimercati, Pierangela Samarati, Dejan S. Milojicic, Carlos A. Varela, Rami Bahsoon, Marcos Dias de Assunção, Omer Rana, Wanlei Zhou, Hai Jin, Wolfgang Gentzsch, Albert Y. Zomaya, and Haiying Shen. 2019. A manifesto for future generation cloud computing: Research directions for the next decade. ACM Comput. Surv. 51, 5 (2019), 105:1--105:38.Google ScholarGoogle Scholar
  37. Jeanderson Cândido, Maurício Aniche, and Arie van Deursen. 2019. Contemporary Software Monitoring: A Systematic Literature Review. arxiv:cs.SE/1912.05878 (2019).Google ScholarGoogle Scholar
  38. Ian Cassar, Adrian Francalanza, Luca Aceto, and Anna Ingólfsdóttir. 2017. A survey of runtime monitoring instrumentation techniques. In Proceedings of the 2nd International Workshop on Pre- and Post-deployment Verification Techniques.Google ScholarGoogle ScholarCross RefCross Ref
  39. Anupam Chanda, Alan L. Cox, and Willy Zwaenepoel. 2007. Whodunit: Transactional profiling for multi-tier applications. In Proceedings of the EuroSys Conference. 17--30.Google ScholarGoogle ScholarDigital LibraryDigital Library
  40. Boyuan Chen. 2019. Improving the software logging practices in DevOps. In Proceedings of the 41st International Conference on Software Engineering.194--197.Google ScholarGoogle ScholarDigital LibraryDigital Library
  41. Boyuan Chen and Zhen Ming (Jack) Jiang. 2017. Characterizing and detecting anti-patterns in the logging code. In Proceedings of the 39th International Conference on Software Engineering. 71--81.Google ScholarGoogle ScholarDigital LibraryDigital Library
  42. Boyuan Chen and Zhen Ming (Jack) Jiang. 2017. Characterizing logging practices in Java-based open source software projects—A replication study in Apache Software Foundation. Empir. Softw. Eng. 22, 1 (2017), 330--374.Google ScholarGoogle ScholarDigital LibraryDigital Library
  43. Boyuan Chen and Zhen Ming (Jack) Jiang. 2019. Extracting and studying the Logging-Code-Issue- Introducing changes in Java-based large-scale open source software systems. Empir. Softw. Eng. 24, 4 (2019), 2285--2322.Google ScholarGoogle ScholarDigital LibraryDigital Library
  44. Boyuan Chen and Zhen Ming (Jack) Jiang. 2020. Studying the use of Java logging utilities in the wild. In Proceedings of the 42nd International Conference on Software Engineering.Google ScholarGoogle ScholarDigital LibraryDigital Library
  45. Boyuan Chen, Jian Song, Peng Xu, Xing Hu, and Zhen Ming (Jack) Jiang. 2018. An automated approach to estimating code coverage measures via execution logs. In Proceedings of the 33rd ACM/IEEE International Conference on Automated Software Engineering. 305--316.Google ScholarGoogle ScholarDigital LibraryDigital Library
  46. Mike Y. Chen, Anthony J. Accardi, Emre Kiciman, David A. Patterson, Armando Fox, and Eric A. Brewer. 2004. Path-based failure and evolution management. In Proceedings of the 1st Symposium on Networked Systems Design and Implementation. 309--322.Google ScholarGoogle Scholar
  47. Mike Y. Chen, Emre Kiciman, Eugene Fratkin, Armando Fox, and Eric A. Brewer. 2002. Pinpoint: Problem determination in large, dynamic internet services. In Proceedings of the International Conference on Dependable Systems and Networks. 595--604.Google ScholarGoogle ScholarDigital LibraryDigital Library
  48. Anton Chuvakin, Kevin Schmidt, and Chris Phillips. 2013. Logging and Log Management. Syngress.Google ScholarGoogle Scholar
  49. Marcello Cinque, Domenico Cotroneo, Raffaele Della Corte, and Antonio Pecchia. 2014. Assessing direct monitoring techniques to analyze failures of critical industrial systems. In Proceedings of the 25th IEEE International Symposium on Software Reliability Engineering. 212--222.Google ScholarGoogle ScholarDigital LibraryDigital Library
  50. Marcello Cinque, Domenico Cotroneo, Roberto Natella, and Antonio Pecchia. 2010. Assessing and improving the effectiveness of logs for the analysis of software faults. In Proceedings of the IEEE/IFIP International Conference on Dependable Systems and Networks. 457--466.Google ScholarGoogle ScholarCross RefCross Ref
  51. Marcello Cinque, Domenico Cotroneo, and Antonio Pecchia. 2009. A logging approach for effective dependability evaluation of complex systems. In Proceedings of the 2nd International Conference on Dependability. 105--110.Google ScholarGoogle ScholarDigital LibraryDigital Library
  52. Marcello Cinque, Domenico Cotroneo, and Antonio Pecchia. 2013. Event logs for the analysis of software failures: A rule-based approach. IEEE Trans. Softw. Eng. 39, 6 (2013), 806--821.Google ScholarGoogle ScholarDigital LibraryDigital Library
  53. Olivier Crameri, Ricardo Bianchini, and Willy Zwaenepoel. 2011. Striking a new balance between program instrumentation and debugging time. In Proceedings of the 6th European Conference on Computer Systems. 199--214.Google ScholarGoogle ScholarDigital LibraryDigital Library
  54. Rui Ding, Hucheng Zhou, Jian-Guang Lou, Hongyu Zhang, Qingwei Lin, Qiang Fu, Dongmei Zhang, and Tao Xie. 2015. Log2: A cost-aware logging mechanism for performance diagnosis. In Proceedings of the USENIX Annual Technical Conference. 139--150.Google ScholarGoogle Scholar
  55. Yuan Ding, Mai Haohui, Xiong Weiwei, Tan Lin, Zhou Yuanyuan, and Pasupathy Shankar. 2010. SherLog: Error diagnosis by connecting clues from run-time logs. In Proceedings of the 15th Edition of ASPLOS on Architectural Support for Programming Languages and Operating Systems.Google ScholarGoogle Scholar
  56. Rodrigo Fonseca, Prabal Dutta, Philip Levis, and Ion Stoica. 2008. Quanto: Tracking energy in networked embedded systems. In Proceedings of the 8th USENIX Symposium on Operating Systems Design and Implementation. 323--338.Google ScholarGoogle Scholar
  57. Rodrigo Fonseca, Michael J. Freedman, and George Porter. 2010. Experiences with tracing causality in networked services. In Proceedings of the Internet Network Management Workshop/Workshop on Research on Enterprise Networking.Google ScholarGoogle Scholar
  58. Rodrigo Fonseca, George Porter, Randy H. Katz, Scott Shenker, and Ion Stoica. 2007. X-Trace: A pervasive network tracing framework. In Proceedings of the 4th Symposium on Networked Systems Design and Implementation.Google ScholarGoogle Scholar
  59. Martin Fowler, Kent Beck, John Brant, William Opdyke, and Don Roberts. 1999. Refactoring: Improving the Design of Existing Code. Addison-Wesley Longman Publishing Co., Inc.Google ScholarGoogle ScholarDigital LibraryDigital Library
  60. Qiang Fu, Jieming Zhu, Wenlu Hu, Jian-Guang Lou, Rui Ding, Qingwei Lin, Dongmei Zhang, and Tao Xie. 2014. Where do developers log? An empirical study on logging practices in industry. In Proceedings of the 36th International Conference on Software Engineering. 24--33.Google ScholarGoogle ScholarDigital LibraryDigital Library
  61. Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. 1995. Design Patterns: Elements of Reusable Object-oriented Software. Addison-Wesley Longman Publishing Co., Inc.Google ScholarGoogle ScholarDigital LibraryDigital Library
  62. Mohamad Gebai and Michel R. Dagenais. 2018. Survey and analysis of kernel and userspace tracers on Linux: Design, implementation, and overhead. ACM Comput. Surv. 51, 2 (2018), 26:1--26:33.Google ScholarGoogle Scholar
  63. Marco Grochowski, Stefan Kowalewski, Melanie Buchsbaum, and Christian Brecher. 2019. Applying runtime monitoring to the industrial Internet of Things. In Proceedings of the 24th IEEE International Conference on Emerging Technologies and Factory Automation.Google ScholarGoogle ScholarDigital LibraryDigital Library
  64. Chuanxiong Guo, Lihua Yuan, Dong Xiang, Yingnong Dang, Ray Huang, David A. Maltz, Zhaoyi Liu, Vin Wang, Bin Pang, Hua Chen, Zhi-Wei Lin, and Varugis Kurien. 2015. Pingmesh: A large-scale system for data center network latency measurement and analysis. In Proceedings of the ACM Conference on Special Interest Group on Data Communication. 139--152.Google ScholarGoogle ScholarDigital LibraryDigital Library
  65. Mehran Hassani, Weiyi Shang, Emad Shihab, and Nikolaos Tsantalis. 2018. Studying and detecting log-related issues. Empir. Softw. Eng. 23, 6 (2018), 3248--3280.Google ScholarGoogle ScholarDigital LibraryDigital Library
  66. Pinjia He, Zhuangbin Chen, Shilin He, and Michael R. Lyu. 2018. Characterizing the natural language descriptions in software logging statements. In Proceedings of the 33rd ACM/IEEE International Conference on Automated Software Engineering. 178--189.Google ScholarGoogle Scholar
  67. Pinjia He, Jieming Zhu, Shilin He, Jian Li, and Michael R. Lyu. 2016. An evaluation study on log parsing and its use in log mining. In Proceedings of the 46th IEEE/IFIP International Conference on Dependable Systems and Networks. 654--661.Google ScholarGoogle Scholar
  68. Joseph L. Hellerstein, Mark M. Maccabee, W. Nathaniel Mills III, and John Turek. 1999. ETE: A customizable approach to measuring end-to-end response times and their components in distributed systems. In Proceedings of the 19th International Conference on Distributed Computing Systems. 152--162.Google ScholarGoogle Scholar
  69. Nicolas Hili, Mojtaba Bagherzadeh, Karim Jahed, and Juergen Dingel. 2020. A model-based architecture for interactive run-time monitoring. Softw. Syst. Model. 19, 4 (2020).Google ScholarGoogle Scholar
  70. Ferenc Horváth, Tamás Gergely, Árpád Beszédes, Dávid Tengeri, Gergő Balogh, and Tibor Gyimóthy. 2017. Code coverage differences of Java bytecode and source code instrumentation tools. Softw. Qual. J. (Dec. 2017).Google ScholarGoogle Scholar
  71. JBoss Logging. 2019. Retrieved from https://developer.jboss.org/wiki/JBossLoggingTooling.Google ScholarGoogle Scholar
  72. Tong Jia, Ying Li, Chengbo Zhang, Wensheng Xia, Jie Jiang, and Yuhong Liu. 2018. Machine deserves better logging: A log enhancement approach for automatic fault diagnosis. In Proceedings of the IEEE International Symposium on Software Reliability Engineering Workshops. 106--111.Google ScholarGoogle ScholarCross RefCross Ref
  73. Zhouyang Jia, Shanshan Li, Xiaodong Liu, Xiangke Liao, and Yunhuai Liu. 2018. SMARTLOG: Place error log statement by deep understanding of log intention. In Proceedings of the 25th International Conference on Software Analysis, Evolution and Reengineering. 61--71.Google ScholarGoogle ScholarCross RefCross Ref
  74. Zhen Ming Jiang, Ahmed E. Hassan, Gilbert Hamann, and Parminder Flora. 2008. Automatic identification of load testing problems. In Proceedings of the 24th IEEE International Conference on Software Maintenance. 307--316.Google ScholarGoogle ScholarCross RefCross Ref
  75. Zhen Ming Jiang, Ahmed E. Hassan, Gilbert Hamann, and Parminder Flora. 2009. Automated performance analysis of load tests. In Proceedings of the 25th IEEE International Conference on Software Maintenance.Google ScholarGoogle ScholarCross RefCross Ref
  76. Zhen Ming (Jack) Jiang, Ahmed E. Hassan, Gilbert Hamann, and Parminder Flora. 2008. An automated approach for abstracting execution logs to execution events. J. Softw. Maint. 20, 4 (2008), 249--267.Google ScholarGoogle ScholarDigital LibraryDigital Library
  77. Suhas Kabinna, Cor-Paul Bezemer, Weiyi Shang, and Ahmed E. Hassan. 2016. Logging library migrations: A case study for the Apache software foundation projects. In Proceedings of the 13th International Conference on Mining Software Repositories. 154--164.Google ScholarGoogle Scholar
  78. Suhas Kabinna, Weiyi Shang, Cor-Paul Bezemer, and Ahmed E. Hassan. 2016. Examining the stability of logging statements. In Proceedings of the IEEE 23rd International Conference on Software Analysis, Evolution, and Reengineering. 326--337.Google ScholarGoogle Scholar
  79. Jonathan Kaldor, Jonathan Mace, Michal Bejda, Edison Gao, Wiktor Kuropatwa, Joe O’Neill, Kian Win Ong, Bill Schaller, Pingjia Shan, Brendan Viscomi, Vinod Venkataraman, Kaushik Veeraraghavan, and Yee Jiun Song. 2017. Canopy: An end-to-end performance tracing and analysis system. In Proceedings of the 26th Symposium on Operating Systems Principles. 34--50.Google ScholarGoogle ScholarDigital LibraryDigital Library
  80. Michael James Katchabaw, Stephen L. Howard, Hanan Lutfi Lutfiyya, Andrew D. Marshall, and Michael Anthony Bauer. 1997. Making distributed applications manageable through instrumentation. In Proceedings of the International Symposium on Software Engineering for Parallel and Distributed Systems. 84--94.Google ScholarGoogle ScholarCross RefCross Ref
  81. Joakim Kävrestad. 2018. Fundamentals of Digital Forensics—Theory, Methods, and Real-life Applications. Springer.Google ScholarGoogle Scholar
  82. Gregor Kiczales, John Lamping, Anurag Mendhekar, Chris Maeda, Cristina Lopes, Jean-Marc Loingtier, and John Irwin. 1997. Aspect-oriented Programming. Springer Berlin Heidelberg.Google ScholarGoogle Scholar
  83. Tae-young Kim, Suntae Kim, Cheol-Jung Yoo, Soohwan Cho, and Sooyong Park. 2018. An automatic approach to validating log levels in Java. In Proceedings of the 25th Asia-Pacific Software Engineering Conference. 623--627.Google ScholarGoogle ScholarCross RefCross Ref
  84. Jason King, Rahul Pandita, and Laurie A. Williams. 2015. Enabling forensics by proposing heuristics to identify mandatory log events. In Proceedings of the Symposium and Bootcamp on the Science of Security. 6:1--6:11.Google ScholarGoogle Scholar
  85. Jason Tyler King, Jonathan Stallings, Maria Riaz, and Laurie Williams. 2017. To log, or not to log: Using heuristics to identify mandatory log events—A controlled experiment. Empir. Softw. Eng. 22, 5 (2017), 2684--2717.Google ScholarGoogle ScholarDigital LibraryDigital Library
  86. Barbara Kitchenham and Stuart Charters. 2007. Guidelines for Performing Systematic Literature Reviews in Software Engineering. EBSE Technical Report. Keele University and Durham University Joint Report.Google ScholarGoogle Scholar
  87. Kimmo Kiviluoma, Johannes Koskinen, and Tommi Mikkonen. 2006. Run-time monitoring of architecturally significant behaviors using behavioral profiles and aspects. In Proceedings of the ACM/SIGSOFT International Symposium on Software Testing and Analysis.Google ScholarGoogle ScholarDigital LibraryDigital Library
  88. Sangeeta Lal, Neetu Sardana, and Ashish Sureka. 2016. LogOptPlus: Learning to optimize logging in catch and if programming constructs. In Proceedings of the 40th IEEE Computer Software and Applications Conference. 215--220.Google ScholarGoogle ScholarCross RefCross Ref
  89. Sangeeta Lal and Ashish Sureka. 2016. LogOpt: Static feature extraction from source code for automated catch block logging prediction. In Proceedings of the 9th India Software Engineering Conference. 151--155.Google ScholarGoogle ScholarDigital LibraryDigital Library
  90. Ralf Lämmel, Ekaterina Pek, and Jürgen Starek. 2011. Large-scale, AST-based API-usage analysis of open-source Java projects. In Proceedings of the ACM Symposium on Applied Computing. 1317--1324.Google ScholarGoogle ScholarDigital LibraryDigital Library
  91. Heng Li, Tse-Hsun (Peter) Chen, Weiyi Shang, and Ahmed E. Hassan. 2018. Studying software logging using topic models. Empir. Softw. Eng. 23, 5 (2018), 2655--2694.Google ScholarGoogle ScholarDigital LibraryDigital Library
  92. Heng Li, Weiyi Shang, and Ahmed E. Hassan. 2017. Which log level should developers choose for a new logging statement? Empir. Softw. Eng. 22, 4 (2017), 1684--1716.Google ScholarGoogle ScholarDigital LibraryDigital Library
  93. Heng Li, Weiyi Shang, Ying Zou, and Ahmed E. Hassan. 2017. Towards just-in-time suggestions for log changes. Empir. Softw. Eng. 22, 4 (2017), 1831--1865.Google ScholarGoogle ScholarDigital LibraryDigital Library
  94. Shanshan Li, Xu Niu, Zhouyang Jia, Xiang-Ke Liao, Ji Wang, and Tao Li. 2019. Guiding log revisions by learning from software evolution history. Empir. Softw. Eng. 25, 3 (09 2019).Google ScholarGoogle Scholar
  95. Zhenhao Li, Tse-Hsun (Peter) Chen, Jinqiu Yang, and Weiyi Shang. 2019. DLFinder: Characterizing and detecting duplicate logging code smells. In Proceedings of the 41st International Conference on Software Engineering. 152--163.Google ScholarGoogle ScholarDigital LibraryDigital Library
  96. Jimmy J. Lin and Dmitriy V. Ryaboy. 2012. Scaling big data mining infrastructure: The Twitter experience. SIGKDD Explor. 14, 2 (2012), 6--19.Google ScholarGoogle ScholarDigital LibraryDigital Library
  97. Zhongxin Liu, Xin Xia, David Lo, Zhenchang Xing, Ahmed E. Hassan, and Shanping Li. 2019. Which variables should I log? IEEE Trans. Softw. Eng. (2019).Google ScholarGoogle Scholar
  98. Di Ma and Gene Tsudik. 2009. A new approach to secure logging. Trans. Softw. 5, 1 (2009), 2:1--2:21.Google ScholarGoogle Scholar
  99. Jonathan Mace, Ryan Roelke, and Rodrigo Fonseca. 2015. Pivot tracing: Dynamic causal monitoring for distributed systems. In Proceedings of the 25th Symposium on Operating Systems Principles. 378--393.Google ScholarGoogle ScholarDigital LibraryDigital Library
  100. Mark Marron. 2018. Log++ logging for a cloud-native world. In Proceedings of the 14th ACM SIGPLAN International Symposium on Dynamic Languages. 25--36.Google ScholarGoogle ScholarDigital LibraryDigital Library
  101. George Mathew and Tim Menzies. 2018. Software engineering’s top topics, trends, and researchers. IEEE Softw. 35, 5 (2018).Google ScholarGoogle Scholar
  102. Jhonny Mertz and Ingrid Nunes. 2019. On the practical feasibility of software monitoring: A framework for low-impact execution tracing. In Proceedings of the 14th International Symposium on Software Engineering for Adaptive and Self-Managing Systems. 169--180.Google ScholarGoogle ScholarDigital LibraryDigital Library
  103. Daniel Le Métayer, Eduardo Mazza, and Marie-Laure Potet. 2010. Designing log architectures for legal evidence. In Proceedings of the 8th IEEE International Conference on Software Engineering and Formal Methods. 156--165.Google ScholarGoogle ScholarDigital LibraryDigital Library
  104. Freddy Munoz, Benoit Baudry, Romain Delamare, and Yves Le Traon. 2013. Usage and testability of AOP: An empirical study of AspectJ. Inf. Softw. Technol. 55, 2 (2013).Google ScholarGoogle Scholar
  105. Nicholas Nethercote. 2004. Dynamic Binary Analysis and Instrumentation. PhD thesis. University of Cambridge, United Kingdom.Google ScholarGoogle Scholar
  106. Flemming Nielson, Hanne R. Nielson, and Chris Hankin. 2010. Principles of Program Analysis. Springer Publishing Company, Incorporated.Google ScholarGoogle Scholar
  107. Adam Oliner, Archana Ganapathi, and Wei Xu. 2012. Advances and challenges in log analysis. Commun. ACM 55, 2 (2012).Google ScholarGoogle Scholar
  108. Opentracing: Vendor-neutral APIs and instrumentation for distributed tracing. 2019. Retrieved from https://opentracing.io/.Google ScholarGoogle Scholar
  109. Antonio Pecchia, Marcello Cinque, Gabriella Carrozza, and Domenico Cotroneo. 2015. Industry practices and event logging: Assessment of a critical software development process. In Proceedings of the 37th IEEE/ACM International Conference on Software Engineering. 169--178.Google ScholarGoogle ScholarCross RefCross Ref
  110. Ariel Rabkin, Wei Xu, Avani Wildani, Armando Fox, David A. Patterson, and Randy H. Katz. 2010. A graphical representation for identifier structure in logs. In Proceedings of the Workshop on Managing Systems via Log Analysis and Machine Learning Techniques.Google ScholarGoogle Scholar
  111. Patrick Reynolds, Charles Edwin Killian, Janet L. Wiener, Jeffrey C. Mogul, Mehul A. Shah, and Amin Vahdat. 2006. Pip: Detecting the unexpected in distributed systems. In Proceedings of the 3rd Symposium on Networked Systems Design and Implementation.Google ScholarGoogle Scholar
  112. Guoping Rong, Qiuping Zhang, Xinbei Liu, and Shenghui Gu. 2017. A systematic review of logging practice in software engineering. In Proceedings of the 24th Asia-Pacific Software Engineering Conference. 534--539.Google ScholarGoogle ScholarCross RefCross Ref
  113. Felix Salfner, Steffen Tschirpke, and Miroslaw Malek. 2004. Comprehensive logfiles for autonomic systems. In Proceedings of the 18th International Parallel and Distributed Processing Symposium.Google ScholarGoogle Scholar
  114. Raja R. Sambasivan, Ilari Shafer, Jonathan Mace, Benjamin H. Sigelman, Rodrigo Fonseca, and Gregory R. Ganger. 2016. Principled workflow-centric tracing of distributed systems. In Proceedings of the 7th ACM Symposium on Cloud Computing. 401--414.Google ScholarGoogle Scholar
  115. Raja R. Sambasivan, Alice X. Zheng, Michael De Rosa, Elie Krevat, Spencer Whitman, Michael Stroucken, William Wang, Lianghong Xu, and Gregory R. Ganger. 2011. Diagnosing performance changes by comparing request flows. In Proceedings of the 8th USENIX Symposium on Networked Systems Design and Implementation.Google ScholarGoogle Scholar
  116. Mohammed Sayagh, Noureddine Kerzazi, Bram Adams, and Fabio Petrillo. 2018. Software configuration engineering in practice: Interviews, survey, and systematic literature review. IEEE Trans. Softw. Eng. 46, 6 (2018).Google ScholarGoogle Scholar
  117. Weiyi Shang, Zhen Ming Jiang, Bram Adams, Ahmed E. Hassan, Michael W. Godfrey, Mohamed Nasser, and Parminder Flora. 2014. An exploratory study of the evolution of communicated information about the execution of large software systems. J. Softw: Evol. Proc. 26, 1 (2014).Google ScholarGoogle ScholarCross RefCross Ref
  118. Weiyi Shang, Zhen Ming Jiang, Hadi Hemmati, Bram Adams, Ahmed E. Hassan, and Patrick Martin. 2013. Assisting developers of big data analytics applications when deploying on Hadoop clouds. In Proceedings of the 35th International Conference on Software Engineering. 402--411.Google ScholarGoogle ScholarCross RefCross Ref
  119. Yuri Shkuro. 2019. Mastering Distributed Tracing: Analyzing Performance in Microservices and Complex Systems. Packt Publishing Ltd.Google ScholarGoogle Scholar
  120. Benjamin H. Sigelman, Luiz André Barroso, Mike Burrows, Pat Stephenson, Manoj Plakal, Donald Beaver, Saul Jaspan, and Chandan Shanbhag. 2010. Dapper, a Large-Scale Distributed Systems Tracing Infrastructure. Technical Report. Google, Inc. Retrieved from https://research.google.com/archive/papers/dapper-2010-1.pdf.Google ScholarGoogle Scholar
  121. Cindy Sridharan. 2018. Distributed Systems Observability. O’Reilly Media, Inc.Google ScholarGoogle Scholar
  122. Eno Thereska, Brandon Salmon, John D. Strunk, Matthew Wachs, Michael Abd-El-Malek, Julio López Hernandez, and Gregory R. Ganger. 2006. Stardust: Tracking activity in a distributed storage system. In Proceedings of the Joint International Conference on Measurement and Modeling of Computer Systems. 3--14.Google ScholarGoogle Scholar
  123. Simon Varvaressos, Kim Lavoie, Alexandre Blondin Massé, Sébastien Gaboury, and Sylvain Hallé. 2014. Automated bug finding in video games: A case study for runtime monitoring. In Proceedings of the 7th IEEE International Conference on Software Testing, Verification and Validation. 143--152.Google ScholarGoogle ScholarDigital LibraryDigital Library
  124. Wei Xu. 2010. System Problem Detection by Mining Console Logs. Ph.D. Dissertation. University of California, Berkeley, CA. Retrieved from http://www.escholarship.org/uc/item/6jx4w194.Google ScholarGoogle ScholarDigital LibraryDigital Library
  125. Stephen Yang, Seo Jin Park, and John K. Ousterhout. 2018. NanoLog: A nanosecond scale logging system. In Proceedings of the USENIX Annual Technical Conference. 335--350.Google ScholarGoogle Scholar
  126. Kundi Yao, Guilherme B. de Pádua, Weiyi Shang, Steve Sporea, Andrei Toma, and Sarah Sajedi. 2018. Log4Perf: Suggesting logging locations for web-based systems’ performance monitoring. In Proceedings of the ACM/SPEC International Conference on Performance Engineering.Google ScholarGoogle Scholar
  127. Ding Yuan, Soyeon Park, Peng Huang, Yang Liu, Michael M. Lee, Xiaoming Tang, Yuanyuan Zhou, and Stefan Savage. 2012. Be conservative: Enhancing failure diagnosis with proactive logging. In Proceedings of the 10th USENIX Symposium on Operating Systems Design and Implementation. 293--306.Google ScholarGoogle Scholar
  128. Ding Yuan, Soyeon Park, and Yuanyuan Zhou. 2012. Characterizing logging practices in open-source software. In Proceedings of the 34th International Conference on Software Engineering. 102--112.Google ScholarGoogle ScholarDigital LibraryDigital Library
  129. Ding Yuan, Jing Zheng, Soyeon Park, Yuanyuan Zhou, and Stefan Savage. 2011. Improving software diagnosability via log enhancement. In Proceedings of the 16th International Conference on Architectural Support for Programming Languages and Operating Systems. 3--14.Google ScholarGoogle ScholarDigital LibraryDigital Library
  130. Yi Zeng, Jinfu Chen, Weiyi Shang, and Tse-Hsun Chen. 2019. Studying the characteristics of logging practices in mobile apps: A case study on F-Droid. Empir. Softw. Eng. (02 2019). DOI:https://doi.org/10.1007/s10664-019-09687-9Google ScholarGoogle Scholar
  131. Xu Zhao, Kirk Rodrigues, Yu Luo, Michael Stumm, Ding Yuan, and Yuanyuan Zhou. 2017. The game of twenty questions: Do you know where to log? In Proceedings of the 16th Workshop on Hot Topics in Operating Systems. 125--131.Google ScholarGoogle ScholarDigital LibraryDigital Library
  132. Xu Zhao, Kirk Rodrigues, Yu Luo, Michael Stumm, Ding Yuan, and Yuanyuan Zhou. 2017. Log20: Fully automated optimal placement of log printing statements under specified overhead threshold. In Proceedings of the 26th Symposium on Operating Systems Principles. 565--581.Google ScholarGoogle ScholarDigital LibraryDigital Library
  133. Xu Zhao, Yongle Zhang, David Lion, Muhammad Faizan Ullah, Yu Luo, Ding Yuan, and Michael Stumm. 2014. lprof: A non-intrusive request flow profiler for distributed systems. In Proceedings of the 11th USENIX Symposium on Operating Systems Design and Implementation. 629--644.Google ScholarGoogle Scholar
  134. Chen Zhi, Jianwei Yin, Shuiguang Deng, Maoxin Ye, Min Fu, and Tao Xie. 2019. An exploratory study of logging configuration practice in Java. In Proceedings of the 35th IEEE International Conference on Software Maintenance and Evolution.Google ScholarGoogle ScholarCross RefCross Ref
  135. Jingwen Zhou, Zhenbang Chen, Haibo Mi, and Ji Wang. 2014. MTracer: A trace-oriented monitoring framework for medium-scale distributed systems. In Proceedings of the 8th IEEE International Symposium on Service Oriented System Engineering. 266--271.Google ScholarGoogle ScholarDigital LibraryDigital Library
  136. Xiang Zhou, Xin Peng, Tao Xie, Jun Sun, Chao Ji, Wenhai Li, and Dan Ding. 2018. Fault analysis and debugging of microservice systems: Industrial survey, benchmark system, and empirical study. IEEE Trans. Softw. Eng. 47, 2 (2018).Google ScholarGoogle Scholar
  137. Jieming Zhu, Pinjia He, Qiang Fu, Hongyu Zhang, Michael R. Lyu, and Dongmei Zhang. 2015. Learning to log: Helping developers make informed logging decisions. In Proceedings of the 37th IEEE/ACM International Conference on Software Engineering.Google ScholarGoogle ScholarCross RefCross Ref
  138. Jieming Zhu, Shilin He, Jinyang Liu, Pinjia He, Qi Xie, Zibin Zheng, and Michael R. Lyu. 2019. Tools and benchmarks for automated log parsing. In Proceedings of the 41st International Conference on Software Engineering. 121--130.Google ScholarGoogle Scholar

Index Terms

  1. A Survey of Software Log Instrumentation

    Recommendations

    Comments

    Login options

    Check if you have access through your login credentials or your institution to get full access on this article.

    Sign in

    Full Access

    • Published in

      cover image ACM Computing Surveys
      ACM Computing Surveys  Volume 54, Issue 4
      May 2022
      782 pages
      ISSN:0360-0300
      EISSN:1557-7341
      DOI:10.1145/3464463
      Issue’s Table of Contents

      Copyright © 2021 ACM

      Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

      Publisher

      Association for Computing Machinery

      New York, NY, United States

      Publication History

      • Published: 3 May 2021
      • Accepted: 1 January 2021
      • Revised: 1 December 2020
      • Received: 1 June 2020
      Published in csur Volume 54, Issue 4

      Permissions

      Request permissions about this article.

      Request Permissions

      Check for updates

      Qualifiers

      • research-article
      • Research
      • Refereed

    PDF Format

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader

    HTML Format

    View this article in HTML Format .

    View HTML Format