UNPKG

uz-pay-sdk

Version:

🚀 Universal Payment SDK for Uzbekistan - Integrate Payme, Click, UzCard, Humo & Apelsin with one simple API. Battle-tested, production-ready, 95% faster integration.

110 lines • 4.23 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.paymentLogger = exports.httpLogger = exports.logger = void 0; const winston_1 = require("winston"); const DailyRotateFile = require("winston-daily-rotate-file"); const path_1 = require("path"); const logDir = (0, path_1.join)(process.cwd(), 'logs'); // Umumiy log format const logFormat = winston_1.format.combine(winston_1.format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }), winston_1.format.errors({ stack: true }), winston_1.format.json(), winston_1.format.printf(({ timestamp, level, message, stack, ...metadata }) => { let msg = `${timestamp} [${level.toUpperCase()}]: ${message}`; if (Object.keys(metadata).length > 0) { msg += ` | ${JSON.stringify(metadata)}`; } if (stack) { msg += `\n${stack}`; } return msg; })); // Console format (development uchun) const consoleFormat = winston_1.format.combine(winston_1.format.colorize(), winston_1.format.simple(), winston_1.format.printf(({ timestamp, level, message, ...metadata }) => { let msg = `${level}: ${message}`; if (Object.keys(metadata).length > 0) { msg += ` ${JSON.stringify(metadata)}`; } return msg; })); // Logger yaratish exports.logger = (0, winston_1.createLogger)({ level: process.env.LOG_LEVEL || 'info', format: logFormat, defaultMeta: { service: 'uz-pay-sdk' }, transports: [ // Console transport (development uchun) new winston_1.transports.Console({ format: process.env.NODE_ENV === 'development' ? consoleFormat : logFormat, level: process.env.NODE_ENV === 'development' ? 'debug' : 'info', }), // Error logs - alohida fayl new DailyRotateFile({ filename: (0, path_1.join)(logDir, 'error-%DATE%.log'), datePattern: 'YYYY-MM-DD', level: 'error', maxFiles: '30d', maxSize: '20m', format: logFormat, }), // Barcha loglar new DailyRotateFile({ filename: (0, path_1.join)(logDir, 'combined-%DATE%.log'), datePattern: 'YYYY-MM-DD', maxFiles: '30d', maxSize: '20m', format: logFormat, }), // Payment operations - alohida tracking new DailyRotateFile({ filename: (0, path_1.join)(logDir, 'payments-%DATE%.log'), datePattern: 'YYYY-MM-DD', level: 'info', maxFiles: '90d', // To'lov loglarini ko'proq saqlaymiz maxSize: '20m', format: logFormat, }), ], }); // Request/Response logger uchun alohida instance exports.httpLogger = (0, winston_1.createLogger)({ level: 'info', format: logFormat, defaultMeta: { service: 'uz-pay-http' }, transports: [ new DailyRotateFile({ filename: (0, path_1.join)(logDir, 'http-%DATE%.log'), datePattern: 'YYYY-MM-DD', maxFiles: '14d', maxSize: '50m', format: logFormat, }), ], }); // Payment operations uchun specialized logger exports.paymentLogger = (0, winston_1.createLogger)({ level: 'info', format: logFormat, defaultMeta: { service: 'uz-pay-payments' }, transports: [ new DailyRotateFile({ filename: (0, path_1.join)(logDir, 'payment-operations-%DATE%.log'), datePattern: 'YYYY-MM-DD', maxFiles: '180d', // 6 oy saqlash maxSize: '100m', format: winston_1.format.combine(winston_1.format.timestamp(), winston_1.format.json(), winston_1.format.printf(({ timestamp, level, message, ...metadata }) => { return JSON.stringify({ timestamp, level, message, ...metadata, }); })), }), ], }); // Development vs Production optimizations if (process.env.NODE_ENV !== 'production') { exports.logger.add(new winston_1.transports.Console({ format: winston_1.format.combine(winston_1.format.colorize(), winston_1.format.simple()), })); } exports.default = exports.logger; //# sourceMappingURL=logger.config.js.map