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.
- Apache Software Foundation. 2020. Apache Commons Logging. Retrieved from https://commons.apache.org/proper/commons-logging/.Google Scholar
- Azure. 2020. Azure security logging and auditing. Retrieved from https://docs.microsoft.com/en-us/azure/security/fundamentals/log-audit.Google Scholar
- AWS. 2020. Centralized Logging. Retrieved from https://aws.amazon.com/solutions/implementations/centralized-logging.Google Scholar
- Baeldung. 2020. Comparing Spring AOP and AspectJ. Retrieved from https://www.baeldung.com/spring-aop-vs-aspectj.Google Scholar
- Datadog. 2020. Datadog. Retrieved from https://datadoghq.com.Google Scholar
- Elastic. 2020. Elastic. Retrieved from https://www.elastic.co.Google Scholar
- Gartner. 2014. Gartner 2014 SIEM Magic Quadrant Leadership Report. Retrieved from http://www.gartner.com/document/2780017.Google Scholar
- Google. 2020. Google Cloud Operation. Retrieved from https://cloud.google.com/products/operations.Google Scholar
- Apache Software Foundation. 2020. HBASE-750: NPE caused by StoreFileScanner.updateReaders. Retrieved from https://issues.apache.org/jira/browse/HBASE-750/.Google Scholar
- Jaeger. 2020. Jaeger Tracing. Retrieved from http://www.jaegertracing.io.Google Scholar
- Kibana. 2020. Kibana. Retrieved from https://www.elastic.co/kibana.Google Scholar
- Lightstep. 2020. Lightstep. Retrieved from https://lightstep.com.Google Scholar
- Apache Software Foundation. 2020. Log4J. Retrieved from http://logging.apache.org/log4j/1.2.Google Scholar
- Apache Software Foundation. 2020. LOG4J 2 Apache Log4j 2. Retrieved from http://logging.apache.org/log4j/2.x.Google Scholar
- LogStash. 2020. logstash - open source log management. Retrieved from http://logstash.net/.Google Scholar
- OpenCensus. 2020. OpenCensus. Retrieved from https://opencensus.io/.Google Scholar
- Dzone. 2020. Overview of Spring Aspect Oriented Programming (AOP). Retrieved from https://dzone.com/articles/overview-of-spring-aspect-oriented-programming-aop.Google Scholar
- Boyuan Chen. 2021. The replication package. Retrieved from https://www.eecs.yorku.ca/∼chenfsd/resources/survey.zip.Google Scholar
- SLF4J. 2020. Simple Logging Facade for Java (SLF4J). Retrieved from https://www.slf4j.org/.Google Scholar
- GitHub. 2020. spdlog - Very fast, header-only/compiled, C++ logging library.Retrieved from https://github.com/gabime/spdlog.Google Scholar
- Splunk. 2020. Splunk. Retrieved from http://www.splunk.com/.Google Scholar
- Sarbanes-Oxley Act. 2002. Summary of Sarbanes-Oxley Act of 2002. Retrieved from http://www.soxlaw.com/.Google Scholar
- UBC. 2020. The AspectC Project. Retrieved from https://www.cs.ubc.ca/labs/spl/projects/aspectc.html.Google Scholar
- 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 Scholar
- Zipkin. 2020. Zipkin. Retrieved from https://zipkin.io/.Google Scholar
- 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 Scholar
- Sven Apel and Don Batory. 2008. How AspectJ is used: An analysis of eleven Aspectj programs. J. Obj. Technol. 9, 1 (2008).Google Scholar
- 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 ScholarDigital Library
- 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 Scholar
- 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 Scholar
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarCross Ref
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 Scholar
- 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 Scholar
- 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 ScholarCross Ref
- 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 ScholarDigital Library
- Boyuan Chen. 2019. Improving the software logging practices in DevOps. In Proceedings of the 41st International Conference on Software Engineering.194--197.Google ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 Scholar
- 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 ScholarDigital Library
- Anton Chuvakin, Kevin Schmidt, and Chris Phillips. 2013. Logging and Log Management. Syngress.Google Scholar
- 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 ScholarDigital Library
- 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 ScholarCross Ref
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 Scholar
- 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 Scholar
- 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 Scholar
- 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 Scholar
- 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 Scholar
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 Scholar
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 Scholar
- 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 Scholar
- 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 Scholar
- 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 Scholar
- 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 Scholar
- JBoss Logging. 2019. Retrieved from https://developer.jboss.org/wiki/JBossLoggingTooling.Google Scholar
- 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 ScholarCross Ref
- 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 ScholarCross Ref
- 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 ScholarCross Ref
- 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 ScholarCross Ref
- 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 ScholarDigital Library
- 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 Scholar
- 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 Scholar
- 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 ScholarDigital Library
- 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 ScholarCross Ref
- Joakim Kävrestad. 2018. Fundamentals of Digital Forensics—Theory, Methods, and Real-life Applications. Springer.Google Scholar
- Gregor Kiczales, John Lamping, Anurag Mendhekar, Chris Maeda, Cristina Lopes, Jean-Marc Loingtier, and John Irwin. 1997. Aspect-oriented Programming. Springer Berlin Heidelberg.Google Scholar
- 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 ScholarCross Ref
- 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 Scholar
- 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 ScholarDigital Library
- 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 Scholar
- 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 ScholarDigital Library
- 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 ScholarCross Ref
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 Scholar
- 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 ScholarDigital Library
- Jimmy J. Lin and Dmitriy V. Ryaboy. 2012. Scaling big data mining infrastructure: The Twitter experience. SIGKDD Explor. 14, 2 (2012), 6--19.Google ScholarDigital Library
- 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 Scholar
- Di Ma and Gene Tsudik. 2009. A new approach to secure logging. Trans. Softw. 5, 1 (2009), 2:1--2:21.Google Scholar
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- George Mathew and Tim Menzies. 2018. Software engineering’s top topics, trends, and researchers. IEEE Softw. 35, 5 (2018).Google Scholar
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 Scholar
- Nicholas Nethercote. 2004. Dynamic Binary Analysis and Instrumentation. PhD thesis. University of Cambridge, United Kingdom.Google Scholar
- Flemming Nielson, Hanne R. Nielson, and Chris Hankin. 2010. Principles of Program Analysis. Springer Publishing Company, Incorporated.Google Scholar
- Adam Oliner, Archana Ganapathi, and Wei Xu. 2012. Advances and challenges in log analysis. Commun. ACM 55, 2 (2012).Google Scholar
- Opentracing: Vendor-neutral APIs and instrumentation for distributed tracing. 2019. Retrieved from https://opentracing.io/.Google Scholar
- 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 ScholarCross Ref
- 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 Scholar
- 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 Scholar
- 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 ScholarCross Ref
- 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 Scholar
- 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 Scholar
- 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 Scholar
- 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 Scholar
- 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 ScholarCross Ref
- 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 ScholarCross Ref
- Yuri Shkuro. 2019. Mastering Distributed Tracing: Analyzing Performance in Microservices and Complex Systems. Packt Publishing Ltd.Google Scholar
- 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 Scholar
- Cindy Sridharan. 2018. Distributed Systems Observability. O’Reilly Media, Inc.Google Scholar
- 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 Scholar
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 Scholar
- 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 Scholar
- 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 Scholar
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 Scholar
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 Scholar
- 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 ScholarCross Ref
- 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 ScholarDigital Library
- 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 Scholar
- 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 ScholarCross Ref
- 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 Scholar
Index Terms
- A Survey of Software Log Instrumentation
Recommendations
Interactive usability instrumentation
EICS '09: Proceedings of the 1st ACM SIGCHI symposium on Engineering interactive computing systemsUsage data logged from user interactions can be extremely valuable for evaluating software usability. However, instrumenting software to collect usage data is a time-intensive task that often requires technical expertise as well as an understanding of ...
Studying software logging using topic models
Software developers insert logging statements in their source code to record important runtime information; such logged information is valuable for understanding system usage in production and debugging system failures. However, providing proper logging ...
The sense of logging in the Linux kernel
AbstractLogging plays a crucial role in software engineering because it is key to perform various tasks including debugging, performance analysis, and detection of anomalies. Despite the importance of log data, the practice of logging still suffers from ...
Comments