You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
1.2 KiB
46 lines
1.2 KiB
/* |
|
MIT License http://www.opensource.org/licenses/mit-license.php |
|
Author Tobias Koppers @sokra |
|
*/ |
|
|
|
"use strict"; |
|
|
|
const SyncBailHook = require("tapable/lib/SyncBailHook"); |
|
const { Logger } = require("./Logger"); |
|
const createConsoleLogger = require("./createConsoleLogger"); |
|
|
|
/** @type {createConsoleLogger.LoggerOptions} */ |
|
let currentDefaultLoggerOptions = { |
|
level: "info", |
|
debug: false, |
|
console |
|
}; |
|
let currentDefaultLogger = createConsoleLogger(currentDefaultLoggerOptions); |
|
|
|
/** |
|
* @param {string} name name of the logger |
|
* @returns {Logger} a logger |
|
*/ |
|
exports.getLogger = name => { |
|
return new Logger( |
|
(type, args) => { |
|
if (exports.hooks.log.call(name, type, args) === undefined) { |
|
currentDefaultLogger(name, type, args); |
|
} |
|
}, |
|
childName => exports.getLogger(`${name}/${childName}`) |
|
); |
|
}; |
|
|
|
/** |
|
* @param {createConsoleLogger.LoggerOptions} options new options, merge with old options |
|
* @returns {void} |
|
*/ |
|
exports.configureDefaultLogger = options => { |
|
Object.assign(currentDefaultLoggerOptions, options); |
|
currentDefaultLogger = createConsoleLogger(currentDefaultLoggerOptions); |
|
}; |
|
|
|
exports.hooks = { |
|
log: new SyncBailHook(["origin", "type", "args"]) |
|
};
|
|
|