import fs from "fs"; import { createLogger, format, transports } from "winston"; import winstonDailyRotateFile from "winston-daily-rotate-file"; export class Logger { public static fileName: string = "basic"; public static logDirectory: string = "logs"; public static level: string = "debug"; public static getInstance() { if (!this.instance) { if (!fs.existsSync(this.logDirectory)) { fs.mkdirSync(this.logDirectory); } this.instance = createLogger({ level: this.level, format: format.combine( format.timestamp({ format: "YYYY-MM-DD HH:mm:ss" }), // format.label({ label: path.basename(process.mainModule.filename) }), format.printf( info => `${info.timestamp} [${info.level}] ${info.message}` ) ), transports: [ new transports.Console({ level: "info", format: format.combine( format.colorize(), format.printf( info => `${info.timestamp} [${info.level}] ${info.message}` ) ) }), new winstonDailyRotateFile({ filename: `${this.logDirectory}/%DATE%-${this.fileName}.log`, datePattern: "YYYY-MM-DD" }) ] }); } return this.instance; } private static instance: any; }