Show HN: Dlg – Zero-cost printf-style debugging for Go
10 months ago
- #logging
- #debugging
- #golang
- dlg 提供了极简的API用于printf式调试,并在生产构建中完全消失
- 零成本抽象:日志调用在生产版本中会被完全消除
- 调试版本中接近零开销,采用性能优先的设计
- 运行时可配置的堆栈跟踪生成(DLG_STACKTRACE=ERROR/ALWAYS)
- 设计上保证并发安全,自定义写入器需实现sync.Locker接口
- 极简API仅包含两个函数:Printf 和 SetOutput
- 编译时不带dlg标签的情况下,所有日志调用都会被消除且无运行时开销
- 调试版本根据运行时配置显示详细日志和堆栈跟踪
- 自定义写入器通过实现sync.Locker可保证并发安全
- 可验证的零成本:编译器在生产构建中会完全移除dlg调用