logger.info(Nachricht, "abc");
Ausgabe ist:
{"0":"a","1":"b","2":"c","level":"info","message":"Nachricht"}
Ich denke, das liegt daran, dass der Meta-String vor dem Stringifing mit dem Objekt kombiniert wird. Mit Stack-Trace (riesiges Array) sieht es viel schlimmer aus. Vielleicht sollte eine solche Fallausgabe sein:
{"metadata":"abc","level":"info","message":"message"}
AKTUALISIEREN:
einfaches Format hat auch dieses Problem:
Ausgabe:
Info: Nachricht {"0":"a","1":"b","2":"c"}
Dies kann mit benutzerdefinierten Formaten in [email protected]
. Bitte erwägen Sie ein Upgrade.
Dies ist kein unterstützter API-Aufruf in winston
– Sie stellen einen String als Metadaten bereit, kein Objekt. Hier sind einige gültige API-Aufrufe:
// 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 }
});
Wenn Sie eine Ausgabe wünschen, die dieser ähnelt:
{"metadata":"abc","level":"info","message":"message"}
dann mach das:
logger.info('message', { metadata: 'abc' });
... werde dieses Ticket als Dokumentationsfehler offen lassen, um besser zu erklären, wie die Variablenarität in den zentralen Protokollierungs-APIs von winston
funktioniert.
@ChrisAlderson FYI Der Grund, warum dies kein benutzerdefiniertes Formatproblem ist, liegt an diesem Codeblock :
const info = Object.assign({}, meta, {
[LEVEL]: level,
level,
message: msg
});
da meta
in diesem Fall ein String ist – "abc"
es zum Objekt {"0":"a","1":"b","2":"c"}
das dann die Basis von info
.
Hilfreichster Kommentar
AKTUALISIEREN:
einfaches Format hat auch dieses Problem:
Ausgabe:
Info: Nachricht {"0":"a","1":"b","2":"c"}