wopian/tracker-killer

View on GitHub
src/util/index.js

Summary

Maintainability
A
0 mins
Test Coverage
import logger from 'simple-node-logger'
import pad from 'pad'
import moment from 'moment'

const argv = require('yargs').argv

export const diff = lastAction => pad(moment().diff(lastAction, 'seconds', true).toFixed(2) + 's', 5)

export const logFile = (level, service, type, ID, action, err, requests) => {
  let message = `${pad(service, 11)} ${type} ${pad(12, ID)} ${pad(action, 8)} (request ${requests}) ${err}`
  switch (level) {
    case 'trace':
      log.trace(message)
      break
    case 'debug':
      log.debug(message)
      break
    case 'warn':
      log.warn(message)
      break
    case 'error':
      log.error(message)
      break
    case 'fatal':
      log.fatal(message)
      break
    default:
      log.info(message)
      break
  }
}

export const logList = (ID, action, lastAction, requests) => `${pad(ID.toString(), 12)} ${pad(action, 12)} ${pad(diff(lastAction), 12)} Requests: ${requests}`

export const log = logger.createRollingFileLogger({
  logDirectory: `${__dirname}/../../`,
  fileNamePattern: 'tracker-killer-<date>.log',
  dateFormat: 'YYYYMMDD',
  timestampFormat: 'YYYY-MM-DD hh:mm:ss.SSS'
})

if (argv._.includes('ALL')) log.setLevel('all')
if (argv._.includes('TRACE')) log.setLevel('TRACE')
if (argv._.includes('DEBUG')) log.setLevel('debug')
// if (argv._.includes('INFO')) log.setLevel('info') // Default
if (argv._.includes('WARN')) log.setLevel('warn')
if (argv._.includes('ERROR')) log.setLevel('error')
if (argv._.includes('FATAL')) log.setLevel('fatal')