web-dev-qa-db-ja.com

nestjsロギングサービスの使用方法

Nestjsの内部Loggerを使用しようとしました( https://docs.nestjs.com/techniques/logger ->で説明されていますが、使用方法の説明はありません)

しかし、問題が発生しました(LoggerServiceなどを挿入しようとしました)

誰もこれを行う方法を説明できますか?

16
maku_at

ベストプラクティス

Logger に静的にアクセスするよりも、クラスのインスタンスを作成することをお勧めします。

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

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

なぜこれが良いのですか?

1)クラス名(またはその他のもの)がこのクラスのすべてのログメッセージの一部になるように、new Logger(AppController.name)などのコンストラクターでコンテキストを提供できます。

2)ある時点でデフォルトのLoggerServiceを拡張または置換する場合、新しいロガーを設定する以外にアプリケーションコードを変更する必要はありません。新しいロガーが自動的に使用されます。静的にアクセスすると、デフォルトの実装が引き続き使用されます。

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

3)テストでLoggerをモックできます:

module.useLogger(new NoOpLogger());
49
Kim Kern

最初にクラスにインポートする必要があります。

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

そして、あなたはロギングから始めることができます:

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

答えは簡単です。 Loggerクラスには静的メソッドがあります。

例えば.

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

使用法:

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