| 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); |
| } |
| }); |
| }; |
| |
| /** |
| * @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"]) |
| }; |