import fs from "fs"; import winston from 'winston'; import Singleton from "../patterns/Singleton"; import {LOG_COLOR} from "../@types/types"; import {LOG_ENV, LOG_TYPE, logDirectory, setLoggerPath, logOptions} from "./LogOptions"; export default class BIFlowLogger extends Singleton{ public logger!: winston.Logger; constructor(dirPath:string) { super(); if (!fs.existsSync(logDirectory)) { fs.mkdirSync(logDirectory); } winston.addColors(LOG_COLOR); this.create(); } public create(){ this.logger = winston.createLogger(logOptions()); } // interface LeveledLogMethod { // (message: string, callback: LogCallback): Logger; // (message: string, meta: any, callback: LogCallback): Logger; // (message: string, ...meta: any[]): Logger; // (message: any): Logger; // (infoObject: object): Logger; // } public log(...args:Array) { switch (LOG_TYPE) { case "CONSOLE": console.log(String(args)); break; case "FILE": this.logger.info(args); break; default: this.logger.info(args); break; } } public info(...args:Array) { if(LOG_ENV !== 'LIVE' && LOG_TYPE == "CONSOLE"){ console.log(String(args)); }else{ this.logger.info(args); } } public error(...args:any) { if(LOG_ENV !== 'LIVE' && LOG_TYPE == "CONSOLE"){ console.log(args); }else{ this.logger.error(args); } } public debug(...args:any) { if(LOG_ENV !== 'LIVE' && LOG_TYPE == "CONSOLE"){ console.log(args); }else{ this.logger.debug(args); } } } export const logger = BIFlowLogger.getInstance();