Winston: O formato json da versão 3.0.0-rc1 não está formatando a meta string de maneira adequada

Criado em 23 out. 2017  ·  4Comentários  ·  Fonte: winstonjs/winston

logger.info (mensagem, "abc");

O resultado é:
{"0": "a", "1": "b", "2": "c", "nível": "info", "mensagem": "mensagem"}

Eu acho que isso ocorre porque a meta string é combinada no objeto antes da stringifing. Parece muito pior com rastreamento de pilha (array enorme). Talvez seja esse o caso, a saída deveria ser:
{"metadados": "abc", "level": "info", "message": "message"}

docs

Comentários muito úteis

ATUALIZAR:
o formato simples também tem este problema:
Saída:
info: mensagem {"0": "a", "1": "b", "2": "c"}

Todos 4 comentários

ATUALIZAR:
o formato simples também tem este problema:
Saída:
info: mensagem {"0": "a", "1": "b", "2": "c"}

Isso pode ser feito usando formatos personalizados em [email protected] . Por favor, considere a atualização.

Esta não é uma chamada de API com suporte em winston - você está fornecendo uma string como metadados, não um objeto. Aqui estão algumas chamadas de API válidas:

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

Se você deseja uma saída semelhante a esta:

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

então faça isto:

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

... deixarei este tíquete aberto como um bug de documentação para explicar melhor como a variável arity funciona nas APIs de registro principais de winston .

@ChrisAlderson Para deste bloco de código :

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

uma vez que meta é uma string neste caso - "abc" torna-se o objeto {"0":"a","1":"b","2":"c"} que é então a base de info daqui para frente.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

sinai-doron picture sinai-doron  ·  3Comentários

Buzut picture Buzut  ·  3Comentários

pocesar picture pocesar  ·  3Comentários

anks333 picture anks333  ·  3Comentários

alditis picture alditis  ·  3Comentários