rodrigogs/github-metrics

View on GitHub
src/config/logger.js

Summary

Maintainability
A
0 mins
Test Coverage
const debug = require('debug')('github-metrics:config:logger');
const os = require('os');
const path = require('path');
const makeDir = require('make-dir');
const split = require('split');
const DailyRotateFile = require('winston-daily-rotate-file');
const winston = require('winston');

debug('configuring logger');

const pkg = require('../../package.json');

winston.emitErrs = true;

const logDirectory = path.join(os.homedir(), `.${pkg.name}/logs`);
makeDir.sync(logDirectory);

const logger = new winston.Logger({
  transports: [
    new DailyRotateFile({
      level: 'info',
      filename: path.join(logDirectory, '.out'),
      datePattern: 'dd-MM-yyyy.log',
      prepend: true,
      handleExceptions: true,
      json: true,
      maxsize: 5242880, // 5MB
      maxFiles: 5,
      maxDays: 10,
      colorize: false,
    }),
    new winston.transports.Console({
      level: 'debug',
      handleExceptions: true,
      json: false,
      colorize: true,
    }),
  ],
  exitOnError: false,
});

module.exports = logger;
module.exports.stream = split().on('data', (message) => {
  logger.info(message);
});