index.js 957 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. const bunyan = require('bunyan');
  2. const minimatch = require('minimatch');
  3. const isProd = process.env.NODE_ENV === 'production';
  4. const config = require('@root/config').logger;
  5. let stream = isProd ? require('./stream.prod') : require('./stream.dev');
  6. // logger store
  7. let loggers = {};
  8. /**
  9. * determine logger level
  10. * @param {string} name Logger name
  11. */
  12. function determineLoggerLevel(name) {
  13. let level = config.default;
  14. // retrieve configured level
  15. Object.keys(config).some(key => { // breakable forEach
  16. // test whether 'name' matches to 'key'(blob)
  17. if (minimatch(name, key)) {
  18. level = config[key];
  19. return; // break if match
  20. }
  21. });
  22. return level;
  23. }
  24. module.exports = (name) => {
  25. // create logger instance if absent
  26. if (loggers[name] == null) {
  27. loggers[name] = bunyan.createLogger({
  28. name,
  29. stream,
  30. level: determineLoggerLevel(name),
  31. });
  32. }
  33. return loggers[name];
  34. };