gpt4 book ai didi

javascript - 记录前缀 - 使用非单例或其他方法

转载 作者:行者123 更新时间:2023-11-30 20:17:39 24 4
gpt4 key购买 nike

我正在研究日志记录助手(在 Node.JS 中),它几乎没有导出函数(错误、警告等...)。例如,我有另外两个脚本使用这个我的“模块”:test1, test2

我需要在两个脚本中初始化我的日志记录模块 (let log = require("./log.js");) 以获取如下错误消息:[time] [错误][TEST1] 实际消息...

我可以使用非单例方法并将构造函数添加到我的日志记录模块中,它将采用 TEST1 这样每个脚本都可以拥有自己的记录器。但是当有 100 个脚本使用 logger 时,也会有 100 个 logger 实例。

那么有没有更好的方法来获得相同的结果,每个文件都可以有自己定义的前缀?

最佳答案

模块需要导出工厂函数或构造函数;为了创建 test1 实例,需要以某种方式传递参数。

实例可以由用户使用自然提供单例的模块来处理:

const loggerFactory = require('./log');

module.exports = loggerFactory('test1');

或由图书馆本身:

loggerFactory.instances = new WeakMap();

function loggerFactory(name) {
if (!loggerFactory.instances.has(name)) {
loggerFactory.instances.set(name, ...);
}

return loggerFactory.instances.get(name);
}

第二种情况正是renowned debug library确实如此,尽管出于兼容性原因,它使用常规对象而不是 WeakMap 处理实例映射。

关于javascript - 记录前缀 - 使用非单例或其他方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51776374/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com