@takentrade/takentrade-libs
Version:
TakeNTrade shared libraries
108 lines (107 loc) • 3.46 kB
JavaScript
;
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);