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' });
... 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"}