【发布时间】:2022-01-20 23:31:09
【问题描述】:
您好,我有这样的文件
const logger = require("./logger");
const { asyncLocalStorage } = require("../localStorage/storage");
const getContextData = () => {
const roomName = asyncLocalStorage.getStore()?.get("roomName") || "";
const userId = asyncLocalStorage.getStore()?.get("userId") || "";
const userName = asyncLocalStorage.getStore()?.get("userName") || "";
return { roomName, userId, userName };
};
const logInfo = (message, additionalData) => {
const { roomName, userId, userName } = getContextData();
logger.info(message, { roomName, userId, userName, additionalData });
};
const logWarn = (message, additionalData) => {
const { roomName, userId, userName } = getContextData();
logger.warn(message, { roomName, userId, userName, additionalData });
};
const logError = (message, additionalData) => {
const { roomName, userId, userName } = getContextData();
logger.error(message, { roomName, userId, userName, additionalData });
};
module.exports = {
logInfo,
logWarn,
logError,
};
这基本上是用我的附加数据包装 winston log 函数,我不喜欢这样,这是多余的。我的意思是这三个功能看起来基本相同。当我想要更改所有内容时,添加另一个级别的日志记录会变得混乱。
有没有这样的方法
func wrapper() {
const { roomName, userId, userName } = getContextData();
}
const logWarn = (message, additionalData) => {
logger.warn(message, { roomName, userId, userName, additionalData });
};
logWarn = wrapper(logWarn);
不必看起来完全像这样。但只是我正在寻找一种方法来写得更干净,然后就是现在
【问题讨论】:
标签: javascript refactoring winston