Ответ 1
Лучшая практика
Лучше, чем статический доступ к 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());