عندما أستخدم نقل وحدة التحكم ، أعلم أنه يمكنني إضافة مستمع مثل هذا:
logger.on ('logging'، (النقل ، المستوى ، msg ، meta) => استخدام البيانات المسجلة ...
ولكن كيف يمكنني تسجيل الدخول إلى الذاكرة والاستماع إليها؟
أنا أبحث بشكل أساسي عن حل للاستماع إلى السجلات دون كتابتها في وحدة التحكم / الملف / إرسالها عبر HTTP.
هتافات.
لمستخدمي winston@3
: تمت إزالة winston.transports.Memory
- استخدم winston.transports.Stream
بدلاً من ذلك مع أي تنفيذ دفق مؤقت.
تاريخيًا من منظور winston < 3
winston.transports.Memory
تم استخدامه لأغراض اختبار الوحدة. تمت إزالته في winston@3
لأن التدفقات قادرة على التعامل مع الضغط الخلفي. يرجى النظر في الترقية وشكرًا لاستخدام winston
!
مرحبًا ، لا يزال السؤال الأصلي صالحًا - هل هناك مثال؟
نريد أيضًا القيام بذلك ، حتى نتمكن من إجراء التسجيل في الذاكرة أثناء الاختبار.
@ lonix1indexzero شيئا من هذا القبيل يجب أن تعمل:
import { Writable } from 'stream';
let output = ''
const stream = new Writable()
stream._write = (chunk, encoding, next) => {
output = output += chunk.toString()
next()
}
const streamTransport = new winston.transports.Stream({ stream })
const logger = winston.createLogger({ transports: [streamTransport]})
logger.info('test message')
const logEvents = output.trim().split('\n')
assert(logEvents[0].includes('test message'))
لا أفترض أن هذا يمكن أن يعمل مع IE11 ، أليس كذلك؟
التعليق الأكثر فائدة
@ lonix1indexzero شيئا من هذا القبيل يجب أن تعمل: