UNPKG

@kitapp-developers/mongo-import-export

Version:

A modern CLI tool to import/export MongoDB collections to and from JSON or CSV — great for backups, migrations, and local development.

48 lines (47 loc) 1.63 kB
import * as winston from 'winston'; import { config } from '../config.js'; import Transport from 'winston-transport'; class MemoryTransport extends Transport { constructor(opts) { super(opts); this.logBuffer = []; } log(info, callback) { setImmediate(() => { this.emit('logged', info); }); const { level, message, timestamp } = info; this.logBuffer.push({ level, message, timestamp }); callback(); } flush() { const consoleTransport = new winston.transports.Console({ format: winston.format.printf(({ level, message, timestamp }) => { return `${timestamp} [${level.toUpperCase()}]: ${message}`; }) }); console.log('\n--- Operation Logs ---'); this.logBuffer.forEach(logEntry => { const tempLogger = winston.createLogger({ levels: winston.config.npm.levels, transports: [consoleTransport] }); tempLogger.log(logEntry.level, logEntry.message, { timestamp: logEntry.timestamp }); tempLogger.close(); }); console.log('----------------------\n'); this.logBuffer = []; } } const memoryTransport = new MemoryTransport(); export const logger = winston.createLogger({ level: config.logger.level, format: winston.format.combine(winston.format.timestamp(), winston.format.json()), transports: [ memoryTransport, new winston.transports.File({ filename: config.logger.file }), ], }); export function flushLogs() { memoryTransport.flush(); }