logger.info(message, "abc");
输出是:
{"0":"a","1":"b","2":"c","level":"info","message":"message"}
我猜这是因为元字符串在字符串化之前被组合到对象中,堆栈跟踪(巨大的数组)看起来更糟。 也许是这样的情况输出应该是:
{"metadata":"abc","level":"info","message":"message"}
更新:
简单格式也有这个问题:
输出:
信息:消息{“0”:“a”,“1”:“b”,“2”:“c”}
这可以通过在[email protected]
使用自定义格式来完成。 请考虑升级。
这不是winston
支持的 API 调用——您提供的是字符串作为元数据,而不是对象。 以下是一些有效的 API 调用:
// winston<strong i="7">@2</strong> API:
logger.log('info', 'Hello world', { custom: true });
logger.log('info', new Error('Yo, it\'s on fire'));
logger.log('info', '%s %d%%', 'A string', 50, { thisIsMeta: true });
// winston<strong i="8">@3</strong> API – a single JSON literal:
logger.log({ level: 'info', message: 'Hello world', custom: true });
logger.log({ level: 'info', message: new Error('Yo, it\'s on fire') });
logger.log({
level: 'info',
message: '%s %d%%',
splat: ['A string', 50],
meta: { thisIsMeta: true }
});
如果你想要类似这样的输出:
{"metadata":"abc","level":"info","message":"message"}
然后这样做:
logger.info('message', { metadata: 'abc' });
... 将把这张票作为文档错误打开,以更好地解释变量 arity 在winston
的核心日志 API 中是如何工作的。
@ChrisAlderson仅供参考,这不是自定义格式问题的原因是因为此代码块:
const info = Object.assign({}, meta, {
[LEVEL]: level,
level,
message: msg
});
因为meta
在这种情况下是一个字符串 - "abc"
它变成了对象{"0":"a","1":"b","2":"c"}
然后它是info
前进的基础。
最有用的评论
更新:
简单格式也有这个问题:
输出:
信息:消息{“0”:“a”,“1”:“b”,“2”:“c”}