NestJS — доступ к контексту приложения в контроллере

#node.js #nestjs

#node.js #nestjs

Вопрос:

У меня есть этот код в main.ts:

 async function bootstrap() {
    const app = await NestFactory.create(AppModule, {
        logger: new LoggerService(
            process.env.SERVER_NAME || 'server',
            process.env.LOG_LEVEL || 'debug'
        ),
    })
...
  

LoggerService:

 import { LoggerService as NestLoggerService } from '@nestjs/common'
import * as Bunyan from 'bunyan'

export class LoggerService implements NestLoggerService {
    private readonly _logger: Bunyan

    constructor(name: string, level: string) {
        this._logger = Bunyan.createLogger({
            name,
            level: level as Bunyan.LogLevelString,
        }).child({
            
            app_name: name,
        })
    }
...
  

Как я могу получить доступ к регистратору в моем контроллере, который создается в процессе начальной загрузки приложения?

Ответ №1:

Из официальной документации NestJS:

Чтобы включить внедрение зависимостей для вашего пользовательского регистратора, создайте класс, который реализует LoggerService, и зарегистрируйте этот класс в качестве поставщика в каком-либо модуле.

Затем вы должны зарегистрировать его в качестве регистратора приложений следующим образом:

 app.useLogger(app.get(MyLogger));
  

И тогда вы сможете внедрить MyLogger в свой контроллер или в любое другое место, где вам это нужно.