Skip to content

Logging

Die Logging-Funktionen werden durch das Interface LoggerService abstrahiert. Dadurch kann später einfacher zu einem anderen Logger gewechselt werden. Aktuell wird der von NestJS bereitgestellte ConsoleLogger (https://docs.nestjs.com/techniques/logger) verwendet. Dieser erfüllt das LoggerService Interface.

Logging Level

Es werden vier Logging Level unterstützt, um unterschiedliche Dringlichkeitsstufen zu repräsentieren:

  • log: allgemeine Informationen
  • error: Fehler
  • warn: Warnungen
  • debug: Informationen zur Fehlerbehebung

Beispiel

Im Modul wird der Logger Service als Provider registriert. Dabei kann mit dem Parameter useClass die konkrete Implementierung gewählt werden.

ts
import { ConsoleLogger, Module } from '@nestjs/common';
import { ExampleController } from './example.controller';
import { LOGGER_SERVICE } from './logger/logger.service';

@Module({
  controllers: [ExampleController],
  providers: [
    {
      useClass: ConsoleLogger,
      provide: LOGGER_SERVICE,
    },
  ],
})
export class ExampleModule {}

In z.B. einem Controller kann dann durch Dependency Injection auf den Logger zugegriffen werden. Dafür wird dieser als Parameter im Konstruktor übergeben und mit dem @Inject-Decorator versehen.

ts
import { Controller, Get, Inject } from '@nestjs/common';
import { LOGGER_SERVICE, LoggerService } from './logger/logger.service';

@Controller()
export class ExampleController {
  constructor(
    @Inject(LOGGER_SERVICE)
    private readonly loggerService: LoggerService,
  ) {}

  @Get('/example')
  getExample(): string {
    this.loggerService.log('example log message');
    return 'example';
  }
}