node-xyz/xyz-core

View on GitHub
src/Log/Logger.ts

Summary

Maintainability
A
1 hr
Test Coverage
let winston = require('winston')
import { wrapper } from './../Util/Util'

function levelColor (level) {
  if (level === 'silly') {
    return wrapper('magenta', level)
  }
  if (level === 'debug') {
    return wrapper('cyan', level)
  }
  if (level === 'verbose') {
    return wrapper('blue', level)
  }
  if (level === 'info') {
    return wrapper('green', level)
  }
  if (level === 'warn') {
    return wrapper('yellow', level)
  }
  if (level === 'error') {
    return wrapper('red', level)
  }
}

function getFormattedDate () {
  var date = new Date()
  var str = date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate() + ' ' + date.getHours() + ':' + date.getMinutes() + ':' + date.getSeconds()

  return str
}
// { error: 0, warn: 1, info: 2, verbose: 3, debug: 4, silly: 5 }

export let logger = new winston.Logger({
  transports: [
    new winston.transports.Console({
      handleExceptions: false,
      prettyPrint: false,
      colorize: true,
      level: 'debug',
      timestamp: function () {
        return Date.now()
      },
      formatter: function (options) {
        // Return string will be passed to logger.
        return `[${getFormattedDate()}][${wrapper('underline', wrapper('bold', global['_serviceName']))}] ${wrapper('bold', levelColor(options.level))} :: ${options.message} `
      }
    })
  ],
  exitOnError: false
})