angular - Konfigurera flera loggnivåer i ngx-logger
Jag har en Angular-applikation och vill lägga till ngx-logger-ramverket där jag kan konfigurera en loggningsnivå endast för en specifik komponent/klass.
Så låt oss säga att en Angular-applikation har 5 olika komponenter/klasser och standardrootnivån är inställd på INFO. Då vill jag kunna ställa in DEBUG för endast 1 komponent/klass. På detta sätt kommer jag bara att få debugmeddelanden för just denna komponent/klass och inte för de andra. Är detta möjligt?
Detta är samma funktionalitet som tillhandahålls av Javas Log4j där det låter dig konfigurera olika loggnivåer för specifika paket.
Om ngx-logger inte stöder denna funktion, vet någon någon annan Angular-loggningsram som stöder detta?
Svar #1
Loggnivån delas av instansen av loggaren, så för att ha specifika loggnivåer per komponenter/moduler/etc... måste du tillhandahålla en annan instans
Exempel på en komponent
import { Component } from "@angular/core";
import { NGXLogger, NgxLoggerLevel } from "src/public_api";
@Component({
templateUrl: './local-provider.component.html',
providers: [NGXLogger],
})
export class LocalProviderComponent {
constructor(public logger: NGXLogger) {
}
log(): void {
this.logger.debug('Test');
}
changeLogLevel(): void {
const config = this.logger.getConfigSnapshot()
config.level = config.level === NgxLoggerLevel.TRACE ? NgxLoggerLevel.ERROR : NgxLoggerLevel.TRACE;
this.logger.updateConfig(config);
}
}
Fullständigt exempel kan hittas på repo här: https://github.com/dbfannin/ngx-logger/tree/master/projects/not-a-singleton
