Лучшая практика
Лучше статического доступа к 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());