Winston: Le format json de la version 3.0.0-rc1 ne formate pas correctement la chaîne méta

Créé le 23 oct. 2017  ·  4Commentaires  ·  Source: winstonjs/winston

logger.info(message, "abc");

La sortie est :
{"0":"a","1":"b","2":"c","level":"info","message":"message"}

Je suppose que c'est parce que la chaîne méta est combinée dans l'objet avant la chaîne, cela semble bien pire avec la trace de la pile (grand tableau). Peut-être qu'un tel cas, la sortie devrait être :
{"metadata":"abc","level":"info","message":"message"}

docs

Commentaire le plus utile

METTRE À JOUR:
le format simple a aussi ce problème :
Sortir:
info : message {"0":"a","1":"b","2":"c"}

Tous les 4 commentaires

METTRE À JOUR:
le format simple a aussi ce problème :
Sortir:
info : message {"0":"a","1":"b","2":"c"}

Cela peut être accompli en utilisant des formats personnalisés dans [email protected] . Veuillez envisager une mise à niveau.

Ce n'est pas un appel d'API pris en charge dans winston - vous fournissez une chaîne en tant que métadonnées, pas un objet. Voici quelques appels d'API valides :

// 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 }
});

Si vous voulez une sortie qui ressemble à ceci :

{"metadata":"abc","level":"info","message":"message"}

alors fais ceci :

logger.info('message', { metadata: 'abc' });

... va laisser ce ticket ouvert en tant que bogue de documentation pour mieux expliquer comment fonctionne l'arité variable dans les API de journalisation de base de winston .

@ChrisAlderson FYI la raison pour laquelle ce n'est pas un problème de format personnalisé est à cause de ce bloc de code :

const info = Object.assign({}, meta, {
  [LEVEL]: level,
  level,
  message: msg
});

puisque meta est une chaîne dans ce cas – "abc" cela devient l'objet {"0":"a","1":"b","2":"c"} qui est alors la base du info à l'avenir.

Cette page vous a été utile?
0 / 5 - 0 notes