skip to main content
article

Log++ logging for a cloud-native world

Published:06 April 2020Publication History
Skip Abstract Section

Abstract

Logging is a fundamental part of the software development and deployment lifecycle but logging support is often provided as an afterthought via limited library APIs or third-party modules. Given the critical nature of logging in modern cloud, mobile, and IoT development workflows, the unique needs of the APIs involved, and the opportunities for optimization using semantic knowledge, we argue logging should be included as a central part of the language and runtime designs. This paper presents a rethinking of the logger for modern cloud-native workflows.

Based on a set of design principles for modern logging we build a logging system, that supports near zero-cost for disabled log statements, low cost lazy-copying for enabled log statements, selective persistence of logging output, unified control of logging output across different libraries, and DevOps integration for use with modern cloud-based deployments. To evaluate these concepts we implemented the Log++ logger for Node.js hosted JavaScript applications.

References

  1. AppInsights 2018. AppInsights. https://azure.microsoft.com/en- us/services/application- insights/ .Google ScholarGoogle Scholar
  2. Boyuan Chen and Zhen Ming Jiang. 2017. Characterizing and Detecting Anti-Patterns in the Logging Code. In ICSE. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. Jong-Deok Choi, Michael Burke, and Paul Carini. 1993. Efficient Flow-sensitive Interprocedural Computation of Pointer-induced Aliases and Side Effects. In POPL. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. Qiang Fu, Jian-Guang Lou, Yi Wang, and Jiang Li. 2009. Execution Anomaly Detection in Distributed Systems through Unstructured Log Analysis. In ICDM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. 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 ICSE. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. George Lee, Jimmy Lin, Chuang Liu, Andrew Lorek, and Dmitriy Ryaboy. 2012. The Unified Logging Infrastructure for Data Analytics at Twitter. Proceedings VLDB Endowment (2012). Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. Matthew C. Loring, Mark Marron, and Daan Leijen. 2017. Semantics of Asynchronous JavaScript. In DLS. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Leonardo Mariani and Fabrizio Pastore. 2008. Automated Identification of Failure Causes in System Logs. In ISSRE. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Mark Marron, Darko Stefanovic, Deepak Kapur, and Manuel Hermenegildo. 2008. Identification of Heap–Carried Data Dependence Via Explicit Store Heap Models. In LCPC. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Karthik Nagaraj, Charles Killian, and Jennifer Neville. 2012. Structured Comparative Analysis of Systems Logs to Diagnose Performance Problems. In NSDI. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. NAPI 2018. N-API. https://nodejs.org/api/n- api.html .Google ScholarGoogle Scholar
  12. Node 2018. Node.js. https://nodejs.org/ .Google ScholarGoogle Scholar
  13. NodeChakraCore 2018. Node with ChakraCore. https://github.com/nodejs/node- chakracore/ .Google ScholarGoogle Scholar
  14. NSolid 2018. N|Solid. https://nodesource.com/products/nsolid/ .Google ScholarGoogle Scholar
  15. Adam Oliner, Archana Ganapathi, and Wei Xu. 2012. Advances and Challenges in Log Analysis. Communications ACM (2012). Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Serilog 2018. Serilog. https://serilog.net/ .Google ScholarGoogle Scholar
  17. Weiyi Shang, Zhen Ming Jiang, Bram Adams, Ahmed E. Hassan, Michael W. Godfrey, Mohamed Nasser, and Parminder Flora. 2011. An Exploratory Study of the Evolution of Communicated Information about the Execution of Large Software Systems. In WCRE. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. Splunk 2018. Splunk. https://www.splunk.com/ .Google ScholarGoogle Scholar
  19. StackDriver 2018. Stackdriver. https://cloud.google.com/stackdriver/ .Google ScholarGoogle Scholar
  20. Konstantin Weitz, Gene Kim, Siwakorn Srisakaokul, and Michael D. Ernst. 2014. A Type System for Format Strings. In ISSTA. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. Ding Yuan, Haohui Mai, Weiwei Xiong, Lin Tan, Yuanyuan Zhou, and Shankar Pasupathy. 2010. SherLog: Error Diagnosis by Connecting Clues from Run-time Logs. In ASPLOS. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. 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 USENIX. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. 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 OSDI. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. Ding Yuan, Soyeon Park, and Yuanyuan Zhou. 2012. Characterizing Logging Practices in Open-source Software. In ICSE. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. Ding Yuan, Jing Zheng, Soyeon Park, Yuanyuan Zhou, and Stefan Savage. 2011. Improving Software Diagnosability via Log Enhancement. In ASPLOS. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. 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 ICSE. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Log++ logging for a cloud-native world

      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 SIGPLAN Notices
        ACM SIGPLAN Notices  Volume 53, Issue 8
        DLS '18
        August 2018
        100 pages
        ISSN:0362-1340
        EISSN:1558-1160
        DOI:10.1145/3393673
        Issue’s Table of Contents
        • cover image ACM Conferences
          DLS 2018: Proceedings of the 14th ACM SIGPLAN International Symposium on Dynamic Languages
          October 2018
          100 pages
          ISBN:9781450360302
          DOI:10.1145/3276945

        Copyright © 2018 ACM

        Publisher

        Association for Computing Machinery

        New York, NY, United States

        Publication History

        • Published: 6 April 2020

        Check for updates

        Qualifiers

        • article

      PDF Format

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader
      About Cookies On This Site

      We use cookies to ensure that we give you the best experience on our website.

      Learn more

      Got it!