- 필수 기능
- 시작하기
- Glossary
- 표준 속성
- Guides
- Agent
- 통합
- 개방형텔레메트리
- 개발자
- API
- Datadog Mobile App
- CoScreen
- Cloudcraft
- 앱 내
- 서비스 관리
- 인프라스트럭처
- 애플리케이션 성능
- APM
- Continuous Profiler
- 스팬 시각화
- 데이터 스트림 모니터링
- 데이터 작업 모니터링
- 디지털 경험
- 소프트웨어 제공
- 보안
- AI Observability
- 로그 관리
- 관리
Go 트레이서 API를 사용하면 %v
형식 지정자를 사용해 스팬 정보와 로그 문을 출력할 수 있습니다.
package main
import (
"net/http"
"gopkg.in/DataDog/dd-trace-go.v1/ddtrace/tracer"
)
func handler(w http.ResponseWriter, r *http.Request) {
// /posts URL에서 웹 요청용 스팬 생성.
span := tracer.StartSpan("web.request", tracer.ResourceName("/posts"))
defer span.Finish()
// 로그 메시지에 스팬 정보 추가:
log.Printf("my log message %v", span)
}
위는 표준 라이브러리의 log
패키지에서 스팬 컨텍스트를 사용하는 방법을 보여주는 예시입니다. 제3자 패키지에도 유사한 로직을 적용할 수 있습니다.
참고: Datadog 로그 통합을 사용하여 로그를 파싱하지 않는 경우, 커스텀 로그 파싱 규칙에서 dd.trace_id
, dd.span_id
, dd.service
, dd.env
, dd.version
가 문자열로 파싱되는지 확인해야 합니다. 자세한 내용은 트레이스 ID 패널에 표시되지 않는 상호 연결 로그를 참고하세요.
로그와 스팬에 연결할 수 있는 logrus 패키지용 후크를 사용할 수 있습니다. Go 트레이서에서 이 패키지를 사용할 수 있습니다.
package main
import (
"github.com/sirupsen/logrus"
dd_logrus "gopkg.in/DataDog/dd-trace-go.v1/contrib/sirupsen/logrus"
"gopkg.in/DataDog/dd-trace-go.v1/ddtrace/tracer"
)
func main() {
// 선택 사항: JSON을 사용하도록 로그 형식 변경(Cf. Go 로그 수집)
logrus.SetFormatter(&logrus.JSONFormatter{})
// Datadog 컨텍스트 로그 후크 추가
logrus.AddHook(&dd_logrus.DDContextLogHook{})
// ...
}
이 명령을 사용하면 컨텍스트를 포함해 로깅하는 경우 로그에 트레이스 ID를 자동으로 삽입합니다.
// 컨텍스트를 포함한 로깅
logrus.WithContext(ctx).Info("Go logs and traces connected!")