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.
Original language | English |
---|---|
Pages (from-to) | 25-36 |
Number of pages | 12 |
Journal | DLS 2018 - Proceedings of the 14th ACM SIGPLAN International Symposium on Dynamic Languages, co-located with SPLASH 2018 |
DOIs | |
State | Published - Oct 24 2018 |
Event | 14th ACM SIGPLAN International Symposium on Dynamic Languages, DLS 2018, co-located with SPLASH 2018 - Boston, United States Duration: Nov 6 2018 → … |
Bibliographical note
Publisher Copyright:© 2018 Copyright held by the owner/author(s).
Keywords
- JavaScript
- Logging
- Runtime Monitoring
ASJC Scopus subject areas
- Computer Science Applications
- Computational Theory and Mathematics
- Software
- Computer Networks and Communications