#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
в свой контроллер или в любое другое место, где вам это нужно.