UNPKG

@lucasmeira/npmfix

Version:
79 lines (78 loc) 3.06 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.updateLoggerMaxFiles = updateLoggerMaxFiles; const tslib_1 = require("tslib"); const fs_1 = tslib_1.__importDefault(require("fs")); const path_1 = tslib_1.__importDefault(require("path")); const i18next_1 = tslib_1.__importDefault(require("i18next")); const winston_1 = tslib_1.__importDefault(require("winston")); const winston_daily_rotate_file_1 = tslib_1.__importDefault(require("winston-daily-rotate-file")); const utils_1 = require("./utils"); const ROOT_DIR = process.cwd(); const CONFIG_PATH = path_1.default.resolve(ROOT_DIR, 'config.json'); function getConfig() { if (fs_1.default.existsSync(CONFIG_PATH)) { const configData = fs_1.default.readFileSync(CONFIG_PATH, 'utf8'); return JSON.parse(configData); } return { maxFiles: '7d' }; } function saveConfig(config) { fs_1.default.writeFileSync(CONFIG_PATH, JSON.stringify(config, null, 2), 'utf8'); } function updateLoggerMaxFiles(logger, maxFiles) { const transport = logger.transports.find((t) => t instanceof winston_daily_rotate_file_1.default); if (transport) { transport.options.maxFiles = maxFiles; } saveConfig({ maxFiles }); logger.info(`maxFiles changed to ${maxFiles}`); } function logFilePath() { const logDirectory = path_1.default.resolve(ROOT_DIR, 'logs'); const fileName = `/log-%DATE%.log`; return { model: path_1.default.join(logDirectory, fileName), path: path_1.default .join(logDirectory, fileName) .replace('%DATE%', new Date().toISOString().split('T')[0]), }; } async function initializeLogger() { const config = getConfig(); return winston_1.default.createLogger({ level: 'info', format: winston_1.default.format.combine(winston_1.default.format.timestamp(), winston_1.default.format.printf(({ level, message, timestamp }) => { return `${timestamp} [${level}]: ${message}`; })), transports: [ new winston_daily_rotate_file_1.default({ filename: logFilePath().model, datePattern: 'YYYY-MM-DD', zippedArchive: true, maxSize: '20m', maxFiles: config.maxFiles, }), new winston_1.default.transports.Console({ format: winston_1.default.format.cli(), }), ], }); } class LoggerService { static instance; static path; constructor() { } static async getInstance() { if (!LoggerService.instance) { LoggerService.instance = await initializeLogger(); LoggerService.path = logFilePath().path; LoggerService.instance.info(`${i18next_1.default.t('logFilePath')} ${(0, utils_1.fileLink)(LoggerService.path)}`); } return LoggerService.instance; } static async getLoggerForClass(cls) { return (await this.getInstance()).child({ className: cls.name }); } } exports.default = LoggerService;