nestjs-context-winston
Version:
Contextual Logger for nestjs apps using AsyncLocalStorage and winston
65 lines • 2.9 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ContextLoggingModule = void 0;
const core_1 = require("@nestjs/core");
const logger_factory_1 = require("./logger-factory");
const logger_context_guard_1 = require("./logger-context-guard");
const request_logger_interceptor_1 = require("./request-logger.interceptor");
const context_nest_logger_1 = require("./context-nest-logger");
const context_filters_map_1 = require("./context-filters-map");
const internal_1 = require("./internal");
const nestjs_context_logger_middleware_1 = require("./nestjs-context-logger.middleware");
class ContextLoggingModule {
static forRoot(options) {
const { logClass } = options;
const logger = (0, logger_factory_1.loggerFactory)(options);
const nestLogger = new context_nest_logger_1.ContextNestLogger(logger);
const clonedOptions = {
...options,
};
const middleware = new nestjs_context_logger_middleware_1.NestJsContextLoggerMiddleware(logger, options);
return {
module: ContextLoggingModule,
nestLogger,
logger,
middleware: middleware.use.bind(middleware),
providers: [
{
provide: logClass,
useValue: logger,
},
{
provide: context_nest_logger_1.ContextNestLogger,
useValue: nestLogger,
},
{
provide: core_1.APP_GUARD,
useFactory: () => new logger_context_guard_1.ContextLoggerContextGuard(logger, clonedOptions),
},
...((options.useLogInterceptor ?? true)
? [
{
provide: core_1.APP_INTERCEPTOR,
useFactory: () => new request_logger_interceptor_1.RequestLoggerInterceptor(logger, clonedOptions),
},
]
: []),
...(options.contextData?.map((cls) => ({
provide: cls,
useValue: (0, internal_1.getContextProxy)(cls),
})) ?? []),
],
exports: [logClass, context_nest_logger_1.ContextNestLogger, ...(options.contextData ?? [])],
excludeFilter(excludedFilter) {
const newFilter = context_filters_map_1.contextFilters.exclude(excludedFilter);
if (clonedOptions.contextFilter) {
clonedOptions.contextFilter = context_filters_map_1.contextFilters.and(newFilter);
}
else
clonedOptions.contextFilter = newFilter;
},
};
}
}
exports.ContextLoggingModule = ContextLoggingModule;
//# sourceMappingURL=context-logging.module.js.map