@russ-b/nestjs-common-tools
Version:
NestJS utility tools
51 lines • 1.86 kB
JavaScript
;
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