| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- const bunyan = require('bunyan'); // will be replaced to browser-bunyan on browser by webpack
- const minimatch = require('minimatch');
- const isBrowser = typeof window !== 'undefined';
- const isProd = process.env.NODE_ENV === 'production';
- const config = require('@root/config').logger;
- let stream = isProd ? require('./stream.prod') : require('./stream.dev');
- // logger store
- let loggers = {};
- /**
- * determine logger level
- * @param {string} name Logger name
- */
- function determineLoggerLevel(name) {
- if (isBrowser && isProd) {
- 'error';
- }
- let level = config.default;
- // retrieve configured level
- Object.keys(config).some(key => { // breakable forEach
- // test whether 'name' matches to 'key'(blob)
- if (minimatch(name, key)) {
- level = config[key];
- return; // break if match
- }
- });
- return level;
- }
- module.exports = (name) => {
- // create logger instance if absent
- if (loggers[name] == null) {
- loggers[name] = bunyan.createLogger({
- name,
- stream,
- level: determineLoggerLevel(name),
- });
- }
- return loggers[name];
- };
|