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
JavaScript
;
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