@russ-b/nestjs-common-tools
Version:
NestJS utility tools
52 lines • 1.77 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Logger = void 0;
const logger_builder_1 = require("./logger-builder");
class Logger {
/**
* Creates a fluent logger builder
* @param appName - Application name (default: 'NestApp')
* @param level - Log level (default: 'debug')
* @returns LoggerBuilder instance
* @example
* ```ts
* const logger = Logger.builder('MyApp', 'info')
* .addTransport('json')
* .addTransport('loki', { lokiUrl: 'http://...' })
* .build();
* ```
*/
static builder(appName, level) {
return new logger_builder_1.LoggerBuilder(appName, level);
}
static normalizeFormats(formats) {
if (!formats) {
return ['nest'];
}
return Array.isArray(formats) ? formats : [formats];
}
static create(appName, level, formats, options) {
const builder = Logger.builder(appName, level);
const types = this.normalizeFormats(formats);
types.forEach((type) => this.addTransportToBuilder(builder, type, options));
return builder.build();
}
static addTransportToBuilder(builder, type, options) {
switch (type) {
case 'loki':
if (!options?.loki) {
throw new Error('Loki transport requires options.loki to be provided');
}
builder.addTransport(type, options.loki);
break;
case 'json':
builder.addTransport(type, options?.json);
break;
case 'nest':
builder.addTransport(type, options?.nest);
break;
}
}
}
exports.Logger = Logger;
//# sourceMappingURL=logger.js.map