Winston: 版本 3.0.0-rc1 json 格式未正确格式化元字符串

创建于 2017-10-23  ·  4评论  ·  资料来源: winstonjs/winston

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”}

所有4条评论

更新:
简单格式也有这个问题:
输出:
信息:消息{“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 / 5 - 0 等级

相关问题

KingRial picture KingRial  ·  3评论

xungwoo picture xungwoo  ·  3评论

greenhat616 picture greenhat616  ·  3评论

anks333 picture anks333  ·  3评论

sinai-doron picture sinai-doron  ·  3评论