Winston: Versi 3.0.0-rc1 format json tidak memformat string meta dengan benar

Dibuat pada 23 Okt 2017  ·  4Komentar  ·  Sumber: winstonjs/winston

logger.info(pesan, "abc");

Keluarannya adalah:
{"0":"a","1":"b","2":"c","level":"info","message":"message"}

Saya kira ini karena string meta digabungkan ke dalam objek sebelum merangkai, Terlihat jauh lebih buruk dengan jejak tumpukan (array besar). Mungkin output kasus seperti itu seharusnya:
{"metadata":"abc","level":"info","message":"message"}

docs

Komentar yang paling membantu

MEMPERBARUI:
format sederhana memiliki masalah ini juga:
Keluaran:
info: pesan {"0":"a","1":"b","2":"c"}

Semua 4 komentar

MEMPERBARUI:
format sederhana memiliki masalah ini juga:
Keluaran:
info: pesan {"0":"a","1":"b","2":"c"}

Ini dapat dicapai dengan menggunakan format khusus di [email protected] . Harap pertimbangkan untuk meningkatkan.

Ini bukan panggilan API yang didukung di winston – Anda menyediakan string sebagai metadata, bukan objek. Berikut adalah beberapa panggilan API yang valid:

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

Jika Anda ingin output yang menyerupai ini:

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

lalu lakukan ini:

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

... akan membiarkan tiket ini terbuka sebagai bug dokumentasi untuk menjelaskan dengan lebih baik cara kerja variabel arity di API pencatatan inti winston .

@ChrisAlderson FYI alasan ini bukan masalah format khusus adalah karena blok kode ini :

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

karena meta adalah string dalam hal ini – "abc" menjadi objek {"0":"a","1":"b","2":"c"} yang kemudian menjadi basis dari info ke depan.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat