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.
- AppInsights 2018. AppInsights. https://azure.microsoft.com/en- us/services/application- insights/ .Google Scholar
- Boyuan Chen and Zhen Ming Jiang. 2017. Characterizing and Detecting Anti-Patterns in the Logging Code. In ICSE. Google Scholar
Digital Library
- Jong-Deok Choi, Michael Burke, and Paul Carini. 1993. Efficient Flow-sensitive Interprocedural Computation of Pointer-induced Aliases and Side Effects. In POPL. Google Scholar
Digital Library
- Qiang Fu, Jian-Guang Lou, Yi Wang, and Jiang Li. 2009. Execution Anomaly Detection in Distributed Systems through Unstructured Log Analysis. In ICDM. Google Scholar
Digital 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 ICSE. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- Matthew C. Loring, Mark Marron, and Daan Leijen. 2017. Semantics of Asynchronous JavaScript. In DLS. Google Scholar
Digital Library
- Leonardo Mariani and Fabrizio Pastore. 2008. Automated Identification of Failure Causes in System Logs. In ISSRE. Google Scholar
Digital Library
- Mark Marron, Darko Stefanovic, Deepak Kapur, and Manuel Hermenegildo. 2008. Identification of Heap–Carried Data Dependence Via Explicit Store Heap Models. In LCPC. Google Scholar
Digital Library
- Karthik Nagaraj, Charles Killian, and Jennifer Neville. 2012. Structured Comparative Analysis of Systems Logs to Diagnose Performance Problems. In NSDI. Google Scholar
Digital Library
- NAPI 2018. N-API. https://nodejs.org/api/n- api.html .Google Scholar
- Node 2018. Node.js. https://nodejs.org/ .Google Scholar
- NodeChakraCore 2018. Node with ChakraCore. https://github.com/nodejs/node- chakracore/ .Google Scholar
- NSolid 2018. N|Solid. https://nodesource.com/products/nsolid/ .Google Scholar
- Adam Oliner, Archana Ganapathi, and Wei Xu. 2012. Advances and Challenges in Log Analysis. Communications ACM (2012). Google Scholar
Digital Library
- Serilog 2018. Serilog. https://serilog.net/ .Google Scholar
- 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 Scholar
Digital Library
- Splunk 2018. Splunk. https://www.splunk.com/ .Google Scholar
- StackDriver 2018. Stackdriver. https://cloud.google.com/stackdriver/ .Google Scholar
- Konstantin Weitz, Gene Kim, Siwakorn Srisakaokul, and Michael D. Ernst. 2014. A Type System for Format Strings. In ISSTA. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- Ding Yuan, Soyeon Park, and Yuanyuan Zhou. 2012. Characterizing Logging Practices in Open-source Software. In ICSE. Google Scholar
Digital Library
- Ding Yuan, Jing Zheng, Soyeon Park, Yuanyuan Zhou, and Stefan Savage. 2011. Improving Software Diagnosability via Log Enhancement. In ASPLOS. Google Scholar
Digital Library
- 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 Scholar
Digital Library
Index Terms
Log++ logging for a cloud-native world
Recommendations
Log++ logging for a cloud-native world
DLS 2018: Proceedings of the 14th ACM SIGPLAN International Symposium on Dynamic LanguagesLogging 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, ...







Comments