all files / src/lib/ logger.js

77.78% Statements 28/36
50% Branches 4/8
42.86% Functions 3/7
80.95% Lines 17/21
4 statements Ignored     
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42                                                    
const logger = require('riotclient-debug')
 
const PLUGIN_NAME = 'rcp-fe-block-list-settings';
 
const LOGGERS = new Map();
 
function getLoggerInstance(namespace, rootNamespace = PLUGIN_NAME) {
  let subNamespace = ('' !== namespace ? `:${namespace}` : '');
  let topNamespace = `${rootNamespace}${subNamespace}`;
 
  const api = {
    // FIXME use enum
    log(...args) { logMessageAtLevel(topNamespace, 'info', ...args) },
    info(...args) { logMessageAtLevel(topNamespace, 'info', ...args) },
    warn(...args) { logMessageAtLevel(topNamespace, 'warn', ...args) },
    error(...args) { logMessageAtLevel(topNamespace, 'error', ...args) },
    debug(...args) { logMessageAtLevel(topNamespace, 'debug', ...args) }
  };
 
  return api;
}
 
function logMessageAtLevel(fullNamespace, level, ...args) {
  // FIXME thread safety?
  let l = LOGGERS[fullNamespace];
  Eif (!l) {
    // Create new logger with this namespace
    l = logger(fullNamespace);
 
    // Bind to browser logging levels
    l.log = logger.consoleWrap(level);
 
    // Save new logger
    LOGGERS.set(fullNamespace, l);
  }
 
  l(args);
}
 
export default getLoggerInstance