webgme-engine
Version:
WebGME server and Client API without a GUI
92 lines (84 loc) • 2.83 kB
JavaScript
/*globals define, debug*/
/*eslint-env node*/
/*eslint no-console: 0*/
/**
* @author pmeijer / https://github.com/pmeijer
*/
define(['debug'], function (_debug) {
'use strict';
// Separate namespaces using ',' a leading '-' will disable the namespace.
// Each part takes a regex.
// ex: localStorage.debug = '*,-socket\.io*,-engine\.io*'
// will log all but socket.io and engine.io
function createLogger(name, options) {
var log = typeof debug === 'undefined' ? _debug(name) : debug(name),
level,
levels = {
silly: 0,
input: 1,
verbose: 2,
prompt: 3,
debug: 4,
info: 5,
data: 6,
help: 7,
warn: 8,
error: 9
};
if (!options) {
throw new Error('options required in logger');
}
if (Object.hasOwn(options, 'level') === false) {
throw new Error('options.level required in logger');
}
level = levels[options.level];
if (typeof level === 'undefined') {
level = levels.info;
}
log.debug = function () {
if (log.enabled && level <= levels.debug) {
if (console.debug) {
log.log = console.debug.bind(console);
} else {
log.log = console.log.bind(console);
}
log.apply(this, arguments);
}
};
log.info = function () {
if (log.enabled && level <= levels.info) {
log.log = console.info.bind(console);
log.apply(this, arguments);
}
};
log.warn = function () {
if (log.enabled && level <= levels.warn) {
log.log = console.warn.bind(console);
log.apply(this, arguments);
}
};
log.error = function () {
if (log.enabled && level <= levels.error) {
log.log = console.error.bind(console);
log.apply(this, arguments);
} else {
console.error.apply(console, arguments);
}
};
log.fork = function (forkName, useForkName) {
forkName = useForkName ? forkName : name + ':' + forkName;
return createLogger(forkName, options);
};
log.forkWithOptions = function (_name, _options) {
return createLogger(_name, _options);
};
return log;
}
function createWithGmeConfig(name, gmeConfig) {
return createLogger(name, gmeConfig.client.log);
}
return {
create: createLogger,
createWithGmeConfig: createWithGmeConfig
};
});