UNPKG

@takentrade/takentrade-libs

Version:
108 lines (107 loc) 3.46 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.TntLoggerService = void 0; const common_1 = require("@nestjs/common"); const pino_1 = __importDefault(require("pino")); /** * TNT Logger Service - Pino-based structured JSON logger * Provides consistent logging across all microservices */ let TntLoggerService = class TntLoggerService { logger; context = {}; constructor(context) { const isDevelopment = process.env.NODE_ENV !== 'production'; this.logger = (0, pino_1.default)({ level: process.env.LOG_LEVEL || 'info', ...(isDevelopment && { transport: { target: 'pino-pretty', options: { colorize: true, translateTime: 'HH:MM:ss Z', ignore: 'pid,hostname', }, }, }), }); if (context) { this.context = context; } } /** * Set context for all subsequent log messages */ setContext(context) { this.context = { ...this.context, ...context }; } /** * Log info message */ log(message, context) { this.logger.info({ ...this.context, ...context }, message); } /** * Log error message */ error(message, trace, context) { this.logger.error({ ...this.context, ...context, trace }, message); } /** * Log warning message */ warn(message, context) { this.logger.warn({ ...this.context, ...context }, message); } /** * Log debug message */ debug(message, context) { this.logger.debug({ ...this.context, ...context }, message); } /** * Log verbose message */ verbose(message, context) { this.logger.trace({ ...this.context, ...context }, message); } /** * Log HTTP request */ logRequest(req, context) { this.logger.info({ ...this.context, ...context, method: req.method, url: req.url, userAgent: req.headers?.['user-agent'], ip: req.ip, }, 'HTTP Request'); } /** * Log HTTP response */ logResponse(req, res, responseTime, context) { this.logger.info({ ...this.context, ...context, method: req.method, url: req.url, statusCode: res.statusCode, responseTime: `${responseTime}ms`, }, 'HTTP Response'); } }; exports.TntLoggerService = TntLoggerService; exports.TntLoggerService = TntLoggerService = __decorate([ (0, common_1.Injectable)() ], TntLoggerService);