javascript - 如何更好地在记录器中添加 uuid
问题描述
------------program1.ts
consumerGroup.on('message',function(msgc){
uuid=uuid();
program2.func2(uuid,msgc);
});
------Program2.ts
function func2(uuid,msgc){
logger.log(uuid,msgc);
program3.func3(uuid,msgc);
}
-----------program3.ts
function func(uuid,msgc){
logger.log(uuid,msgc);
}
我必须在记录器中为现有项目中从消费者读取的每条消息实现 UUID。我想出了类似于上面的代码方法,但是有很多子函数,我必须为每个函数/记录器调用做这件事。
有没有更好的方法呢?
解决方案
如果您使用 Node 14 及更高版本,则可以使用内置的AsyncLocalStorage。使用 ID 进行日志记录是这个新 API 的典型用例。这是用例的示例:
const { AsyncLocalStorage } = require('async_hooks');
const asyncLocalStorage = new AsyncLocalStorage();
function logWithId(msg) {
const id = asyncLocalStorage.getStore();
logger.log(id, msg);
}
asyncLocalStorage.run(uuid(), () => {
consumerGroup.on('message',function(msgc){
program2.func2(msgc);
});
})
// ------Program2.ts
function func2(uuid,msgc){
logWithId(msgc);
program3.func3(msgc);
}
// -----------program3.ts
function func(uuid,msgc){
logWithId(msgc);
}
阅读文档以了解更多信息。
推荐阅读
- python - python中的字典理解(生成一个字母字典,其中值是键前一个字母)
- python - 本地/全局范围
- python - 循环时打印直线 - Python 3
- python - 如何告诉 Pyinstaller 使用 Scripts 文件夹中的 .EXE?
- google-sheets - 创建多个可能结果的公式
- php - Codeigniter 内容安全政策
- c# - 具有通用服务和存储库代码的 .NET Core 依赖注入错误
- python - 姜戈。网址找不到视图
- java - 通过代码将视图添加到约束布局
- javascript - 无法在不依赖另一个标签的情况下显示 JavaScript / jQuery div 标签