import * as winston from 'winston';
import 'winston-daily-rotate-file';
import * as path from 'path';
import { AAI_DIR } from '../paths';
import { ALWAYSAI_LOG_LEVEL, ALWAYSAI_LOG_TO_CONSOLE } from '../environment';

const LOG_LEVEL = ALWAYSAI_LOG_LEVEL || 'info';
const transports = ALWAYSAI_LOG_TO_CONSOLE
  ? [new winston.transports.Console({ level: LOG_LEVEL })]
  : [
      new winston.transports.DailyRotateFile({
        filename: path.join(AAI_DIR, 'cli-logs', 'cli-logs.txt'),
        maxSize: '5m',
        maxFiles: '2d'
      })
    ];

export const logger = winston.createLogger({
  level: LOG_LEVEL,
  format: winston.format.combine(
    winston.format.timestamp(),
    winston.format.errors({ stack: true }),
    winston.format.splat(),
    winston.format.simple(),
    winston.format.printf(({ timestamp = '', level = '', message = '' }) => {
      return `[${timestamp}] ${level}: ${message}`;
    })
  ),
  transports
});

logger.info(`Initialized logger with log level: ${LOG_LEVEL}`);
