栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

NodeJS Express-全局唯一请求ID

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

NodeJS Express-全局唯一请求ID

已编辑

最后,我创建了一个库,可以完成所有工作。 https://github.com/davicente/express-logger-unique-req-
id

它是Winston库的包装,因此您可以以相同的方式使用它。

让我知道这是否对您有帮助


我们在多个项目中都遇到了同样的问题,但我找不到针对该问题的完整解决方案。我们使用相同的技术(Node.js,Express.js和Winston记录日志),我找到了一个解决方案,它使用了几个库并包装了Winston库:-node-
uuid,用于为每个请求创建唯一的标识符-continuation-local-用于在不同模块之间共享此ID的存储,而无需在所有调用中发送req对象。

首先,我需要为每个请求创建并设置唯一标识符。我在中间件中做到这一点:

var uuid = require('node-uuid');var createNamespace = require('continuation-local-storage').createNamespace;var myRequest = createNamespace('my request');// Run the context for each request. Assign a unique identifier to each requestapp.use(function(req, res, next) {    myRequest.run(function() {        myRequest.set('reqId', uuid.v1());        next();    });});

之后,我必须包装Winston库,从上下文中恢复ID并添加到日志消息中:

var winston = require('winston');var getNamespace = require('continuation-local-storage').getNamespace;// Wrap Winston logger to print reqId in each logvar formatMessage = function(message) {    var myRequest = getNamespace('my request');    message = myRequest && myRequest.get('reqId') ? message + " reqId: " + myRequest.get('reqId') : message;    return message;};var logger = {    log: function(level, message) {        winstonLogger.log(level, formatMessage(message));    },    error: function(message) {        winstonLogger.error(formatMessage(message));    },    warn: function(message) {        winstonLogger.warn(formatMessage(message));    },    verbose: function(message) {        winstonLogger.verbose(formatMessage(message));    },    info: function(message) {        winstonLogger.info(formatMessage(message));    },    debug: function(message) {        winstonLogger.debug(formatMessage(message));    },    silly: function(message) {        winstonLogger.silly(formatMessage(message));    }};module.exports = logger;

我认为这有点复杂,因此我决定将其写下来。您可以从那里获得更多信息:Express.js:使用全局唯一请求ID –
Node.js记录信息

希望这对您的问题有所帮助。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/608779.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号