We don’t chain our transports in the same way as winston client-side, but
we’ll conform more-or-less to winston’s interface for the log
method for
consistency’s sake. This means passing a function as the fourth argument.
We’ll use a noop.
var noop = () => {};
var transportQueue = [];
var transportTimer;
function runTransports() {
var batch = transportQueue;
transportQueue = [];
transportTimer = null;
for (var i = 0; i < batch.length; i++) {
const [transport, level, msg, meta] = batch[i];
transport.log(level, msg, meta, noop);
}
}
function scheduleTransport(tuple) {
transportQueue.push(tuple);
if (!transportTimer) {
transportTimer = setTimeout(runTransports, 0);
}
}
var makeLogger = function(group, opts){
var config = common.config[group]
var logger = {
opts,
name: opts.name,
level: config.baseLevel,
log: function(level, msg, meta){
if (this.transports.length) {
this.transports.forEach(transport => {
if (config.levels[level] > config.levels[transport.level]) return;
scheduleTransport([transport, level, msg, meta]);
});
}
if (config.levels[level] > config.levels[this.level]) return;