NestJS
ClickStack NestJS 통합을 사용하면 새로운 로거를 생성하거나 기본 로거를 사용하여 로그를 ClickStack으로 전송할 수 있습니다(nest-winston 기반).
이 가이드에서 설정하는 항목:
| ✅ 로그 | ✖️ 메트릭 | ✖️ 트레이스 |
메트릭이나 APM/트레이스를 전송하려면, 애플리케이션에 해당 언어용 통합을 추가해야 합니다.
시작하기
루트 AppModule에 HyperDXNestLoggerModule을 import한 뒤 forRoot()
메서드를 사용해 구성합니다.
이후에는 HDX_LOGGER_MODULE_PROVIDER 주입 토큰을 통해 프로젝트 전반에서 주입하여 사용할 수 있는 winston 인스턴스를 사용할 수 있습니다:
Nest 로거 교체하기 (부트스트랩 시 사용)
이렇게 하면 의존성 주입 기능을 사용할 수 없게 되므로 forRoot 및 forRootAsync 가 더 이상 필요하지 않으며 사용해서는 안 됩니다. 메인 모듈에서 제거하십시오.
의존성 주입을 사용하면 사소한 단점이 하나 있습니다. Nest는 먼저 애플리케이션을 부트스트랩해야 합니다(모듈과 프로바이더를 인스턴스화하고, 의존성을 주입하는 등). 이 과정에서 HyperDXNestLogger 인스턴스는 아직
사용할 수 없으므로 Nest는 내부 로거로 되돌아가게 됩니다.
한 가지 해결책은 애플리케이션 라이프사이클 바깥에서 createLogger 함수를 사용해 로거를 생성하고,
이를 NestFactory.create 에 전달하는 것입니다. 그러면 Nest는 Logger 클래스로 해당 커스텀 로거
(createLogger 메서드가 반환한 동일한 인스턴스)를 감싸 모든 호출을 그 로거로 전달합니다:
main.ts 파일에서 로거를 생성하십시오
메인 모듈을 수정하여 Logger 서비스를 제공하게 합니다:
그런 다음 @nestjs/common의 Logger를 타입 힌트로 지정하여 로거를 간단히 주입합니다.