UNPKG

@russ-b/nestjs-common-tools

Version:
51 lines 1.86 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.LoggerBuilder = void 0; const transport_factory_1 = require("./transport-factory"); const nest_winston_1 = require("nest-winston"); class LoggerBuilder { constructor(appName = 'NestApp', level = 'debug') { this.appName = appName; this.level = level; this.transports = []; } setLevel(level) { this.level = level; return this; } setAppName(appName) { this.appName = appName; return this; } addTransport(transportType, options) { const transport = this.createTransport(transportType, options); this.transports.push(transport); return this; } build() { if (!this.transports.length) { throw new Error('Should be at least one transport specified.'); } return nest_winston_1.WinstonModule.createLogger({ level: this.level, transports: this.transports, }); } createTransport(type, options) { switch (type) { case 'json': return new transport_factory_1.JsonTransportFactory(this.level).createTransport(); case 'loki': if (!options?.lokiUrl) { throw new Error('lokiUrl is required for Loki transport'); } return new transport_factory_1.LokiTransportFactory(this.level, options.lokiUrl, options.labels || { service: this.appName }).createTransport(); case 'nest': return new transport_factory_1.NestTransportFactory(this.level, this.appName).createTransport(); default: throw new Error(`Unknown transport type: ${type}`); } } } exports.LoggerBuilder = LoggerBuilder; //# sourceMappingURL=logger-builder.js.map