每个Node.js应用程序都从伐木开始.
一开始,伐木似乎很简单。
出出一文,再加一时相克,再行相克.
但是,一旦应用达到生产,伐木很快会变得更加复杂.
在过去的几个月里,在建造Umbrelog节点时. js SDK, 我们发现建立一个生产准备的伐木库需要解决很多一开始并不明显的问题。
以下是我们吸取的一些教训。
伐木绝不应成为瓶颈应用程序应继续满足请求,即使伐木后端暂时无法使用。
伐木的SDK应缓冲、再试并优雅地失败,而不是减缓生产流量。
日志很重要,但可用性更为重要。
单个日志条目很少解释发生了什么。
只要有可能,日志应该自动带入有用的上下文,例如: 服务名 Environment Correlation IDs Executive context Runtime 元数据开发者不应该在每次日志呼叫中手动附加这些信息.
仪器化应该要求最小的代码开发者在集成需要几分钟而不是小时的情况下,更有可能采用SDK.
例如,自动为Express应用程序提供即时值而不需要开发者重写其日志策略.
良好的开发者经验往往与特征同样重要。
生产系统必须正确处理关闭问题,一个最容易丢失日志的方法就是在程序关闭期间。
服务器终止 。
集装箱重新开始。
进行部署。
如果缓冲日志在退出前没有冲出,则重要信息会消失.
因此,任何生产伐木SDK都必须进行优雅的关闭处理。
开放源代码提高了信任度 我们最近开放源代码Umbrelog SDK的原因之一是透明度 开发者可以检查执行情况,了解如何收集数据,审查缓冲策略并作改进.
开放源码有助于建立对文件符合现实的信心。
最终的想法 构建一个日志 SDK 证明远不止于在 Controup.log () 周围写一个包装.
生产环境需要可靠性,性能,合理的缺省,以及开发者的经验,不能挡道.
如果你对执行感兴趣,我们的SDK作为开源:Node.js SDK:https://github.com/umbrelog/node-sdk 浏览器 SDK: https://github.com/umbrelog/browser-sdk 文献: https://umbrelog.com/docs