如何与winston关联Id?

Jon*_*Sud 7 node.js winston

我在我的 Node.js 应用程序中使用 Winston。

const winston = require('winston');
const logger = winston.createLogger({
    transports: [
        new winston.transports.Console()
    ]
});

logger.info('What rolls down stairs');
Run Code Online (Sandbox Code Playgroud)

我想添加到日志相关id,但我不想每次都写

 logger.info('What rolls down stairs', correlationId);
Run Code Online (Sandbox Code Playgroud)

我希望温斯顿能做到这一点。对于每个日志,我希望获取相关性 ID 作为函数的结果,以便我可以将相关性 ID 发送给用户(而不仅仅是将其输出到控制台)。

 const correlationId = logger.info('blabla')
Run Code Online (Sandbox Code Playgroud)

温斯顿可以做到吗?

小智 -1

correlationId要在 Winston 中默认创建和设置每个日志,您需要使用defaultMeta.

var correlationId = Math.random().toString(36).substring(2, 15) + Math.random().toString(36).substring(2, 15)
const winston = require('winston');
const logger = winston.createLogger({
defaultMeta: { correlationId },
    transports: [
        new winston.transports.Console()
    ]
});

logger.info('What rolls down stairs');
Run Code Online (Sandbox Code Playgroud)