logger.info (رسالة ، "abc") ؛
الإخراج هو:
{"0": "a"، "1": "b"، "2": "c"، "level": "info"، "message": "message"}
أعتقد أن هذا بسبب دمج سلسلة meta في الكائن قبل Stringifing ، يبدو الأمر أسوأ بكثير مع تتبع المكدس (مصفوفة ضخمة). ربما يجب أن يكون إخراج هذه الحالة:
{"البيانات الوصفية": "abc" ، "المستوى": "المعلومات" ، "الرسالة": "الرسالة"}
تحديث:
التنسيق البسيط به هذه المشكلة أيضًا:
انتاج:
المعلومات: الرسالة {"0": "أ" ، "1": "ب" ، "2": "ج"}
يمكن تحقيق ذلك باستخدام التنسيقات المخصصة في [email protected]
. يرجى النظر في الترقية.
هذا ليس استدعاء API مدعومًا في winston
- أنت تقدم سلسلة كبيانات وصفية ، وليست ككائن. فيما يلي بعض استدعاءات API الصالحة:
// 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 }
});
إذا كنت تريد إخراجًا مشابهًا لهذا:
{"metadata":"abc","level":"info","message":"message"}
ثم افعل هذا:
logger.info('message', { metadata: 'abc' });
... سوف تترك هذه البطاقة مفتوحة باعتبارها خطأ في التوثيق لشرح أفضل لكيفية عمل arity المتغير في واجهات برمجة تطبيقات التسجيل الأساسية الخاصة بـ winston
.
ChrisAlderson FYI السبب في أن هذه ليست مشكلة تنسيق مخصص بسبب كتلة التعليمات البرمجية هذه :
const info = Object.assign({}, meta, {
[LEVEL]: level,
level,
message: msg
});
نظرًا لأن meta
عبارة عن سلسلة في هذه الحالة - "abc"
فإنها تصبح الكائن {"0":"a","1":"b","2":"c"}
والذي يمثل بعد ذلك قاعدة info
فصاعدًا.
التعليق الأكثر فائدة
تحديث:
التنسيق البسيط به هذه المشكلة أيضًا:
انتاج:
المعلومات: الرسالة {"0": "أ" ، "1": "ب" ، "2": "ج"}