Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
@doodle/logger / logger / winstonLogger.js
Size: Mime:
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }

function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }

/**
 * Logger implementation with winston.
 */
const winston = require('winston');
/**
 * Picks the correct transports depending on the environment
 * @param {string} environment The environment, usually NODE_ENV
 * @param {string} logPath The file path where the logs is saved.
 */


function getTransports(environment, logPath) {
  switch (environment) {
    case 'test':
      return [];

    case 'development':
      return [new winston.transports.Console(), new winston.transports.File({
        filename: logPath
      })];

    case 'production':
    default:
      return [new winston.transports.File({
        filename: logPath
      })];
  }
}
/**
 * Creates the winston logger instance.
 * @param {string} logFilePath The file path where the logs is saved.
 * @param {string} logLevel The log level of the service. Logs with priority below this level will be ignored.
 * @param {string} environment The environment, usually NODE_ENV
 */


function createLogger({
  logFilePath,
  logLevel = 'debug',
  environment = 'production'
}) {
  /**
   * Formatter that converts the winston default log style to Doodle log style.
   */
  const logAdapter = winston.format(info => _objectSpread({
    severity: info.level,
    level: undefined
  }, info));
  const logger = winston.createLogger({
    level: logLevel,
    format: winston.format.combine(logAdapter(), winston.format.json()),
    exitOnError: false,
    transports: []
  });
  getTransports(environment, logFilePath).forEach(transport => logger.add(transport));
  return logger;
}

module.exports = {
  createLogger
};