'use strict'; const winston = require('winston'); const Transport = require('winston-transport'); const winstonLogged = []; class DeferLogger extends Transport { constructor(opts) { super(opts); this.logged = opts.logged; } log(info, callback) { setImmediate(() => { this.emit('logged', info); }); this.logged.push([info.level, info.message]); callback(); } } before(() => { // defer winston logs until the end winston.clear(); winston.add(new DeferLogger({ logged: winstonLogged })); }); after(() => { console.log('\n\n'); winstonLogged.forEach((args) => { console.log(`${args[0]} ${args[1]}`); }); });