【发布时间】:2019-04-16 12:24:50
【问题描述】:
我正在编写一个公司 npm 包(在 typescript 中),并将现有代码移植到其中。在现有代码中,有一些console.log、console.warn和console.error语句。像这样:
try {
const foo = getFoo("bar");
return callback(undefined, foo);
} catch (e) {
console.error(e);
return cb(new httpErrors.BadRequest("Some message"));
}
所以发生的事情是:
- 记录错误
- 使用另一个错误调用回调,而不是传入原始错误
这是我们想要的行为,因为我们不想返回原始错误消息,但我们确实希望它出现在我们的日志中。
现在我要转移到一个包,我想应用一些最佳实践并删除 console 调用。这是一个 tslint 规则,我同意包作者不应该填写包用户的日志。
那么这里最好的方法是什么?
我已经阅读了有关debug 包的信息,但这仅用于开发目的。另外,这意味着我们不会有我们的日志消息,除非我们设置DEBUG=...
我想知道是否可以在我的包中使用单例 EventEmitter。但话又说回来,单例被视为一种反模式。
而且我不想添加日志库作为依赖项,因为作为包作者,我不能说要使用哪个日志库。
我想到的最后一个选项是允许传入一个我可以调用的日志记录函数,但我觉得这有点糟糕。
那么,允许从(TypeScript/npm)库记录消息的首选技术是什么?
(如果有的话;我对 Node/TypeScript 生态系统还很陌生)。
【问题讨论】:
标签: node.js typescript logging npm