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