web-dev-qa-db-fra.com

Comment utiliser le service de journalisation nestjs

J'ai essayé d'utiliser la variable interne Logger de nestjs (décrite sur https://docs.nestjs.com/techniques/logger -> mais sans description de son utilisation)

Mais j’ai eu des problèmes (essayé d’injecter LoggerService et ainsi de suite)

Quelqu'un peut-il expliquer comment faire cela?

TIA

7
maku_at

Meilleure pratique

Mieux que d’accéder à Logger statiquement, vous devez créer une instance pour votre classe:

@Controller()
export class AppController {
  private readonly logger = new Logger(AppController.name);

  @Get()
  async get() {
    this.logger.log('Getting stuff');
  }
}

Pourquoi est-ce mieux?

1) Vous pouvez fournir un contexte dans le constructeur tel que new Logger(AppController.name) pour que le nom de la classe (ou toute autre chose) fasse partie de tous les messages de journal de cette classe.

2) Si, à un moment donné, vous souhaitez étendre ou remplacer la variable LoggerService par défaut, vous n'avez pas besoin de modifier le code de votre application en plus de la configuration du nouvel enregistreur. Votre nouvel enregistreur sera automatiquement utilisé. Si vous y accédez de manière statique, il continuera à prendre l'implémentation par défaut.

const app = await NestFactory.create(AppModule, {logger: new MyLogger()});
15
Kim Kern

La réponse est simple Il existe des méthodes statiques sur la classe Logger.

par exemple.

static log(message: string, context = '', isTimeDiffEnabled = true) 

Usage:

Logger.log('Only a test');
2
maku_at

Vous devez d'abord importer dans votre classe:

import { Logger } from '@nestjs/common';

et alors vous pouvez commencer par vous connecter:

Logger.log('info')
Logger.warn('warning')
Logger.error('something went wrong! ', error)
2
Dani Mach