62 lines
1.4 KiB
JavaScript
62 lines
1.4 KiB
JavaScript
|
'use strict';
|
||
|
|
||
|
require('object.assign/shim')();
|
||
|
require('es6-symbol/implement');
|
||
|
|
||
|
/* global window: true */
|
||
|
const LogLevel = require('./lib/LogLevel');
|
||
|
const MethodFactory = require('./lib/MethodFactory');
|
||
|
const PrefixFactory = require('./factory/PrefixFactory');
|
||
|
|
||
|
const defaultLogger = new LogLevel({ name: 'default' });
|
||
|
const cache = { default: defaultLogger };
|
||
|
|
||
|
// Grab the current global log variable in case of overwrite
|
||
|
const existing = (typeof window !== 'undefined') ? window.log : null;
|
||
|
|
||
|
module.exports = Object.assign(defaultLogger, {
|
||
|
|
||
|
get factories() {
|
||
|
return {
|
||
|
MethodFactory,
|
||
|
PrefixFactory
|
||
|
};
|
||
|
},
|
||
|
|
||
|
get loggers() {
|
||
|
return cache;
|
||
|
},
|
||
|
|
||
|
getLogger(options) {
|
||
|
if (typeof options === 'string') {
|
||
|
options = { name: options };
|
||
|
}
|
||
|
|
||
|
if (!options.id) {
|
||
|
options.id = options.name;
|
||
|
}
|
||
|
|
||
|
const { name, id } = options;
|
||
|
const defaults = { level: defaultLogger.level };
|
||
|
|
||
|
if (typeof name !== 'string' || !name || !name.length) {
|
||
|
throw new TypeError('You must supply a name when creating a logger.');
|
||
|
}
|
||
|
|
||
|
let logger = cache[id];
|
||
|
if (!logger) {
|
||
|
logger = new LogLevel(Object.assign({}, defaults, options));
|
||
|
cache[id] = logger;
|
||
|
}
|
||
|
return logger;
|
||
|
},
|
||
|
|
||
|
noConflict() {
|
||
|
if (typeof window !== 'undefined' && window.log === defaultLogger) {
|
||
|
window.log = existing;
|
||
|
}
|
||
|
|
||
|
return defaultLogger;
|
||
|
}
|
||
|
});
|