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"}
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.
Comentários muito úteis
ATUALIZAR:
o formato simples também tem este problema:
Saída:
info: mensagem {"0": "a", "1": "b", "2": "c"}