- 필수 기능
- 시작하기
- Glossary
- 표준 속성
- Guides
- Agent
- 통합
- 개방형텔레메트리
- 개발자
- API
- Datadog Mobile App
- CoScreen
- Cloudcraft
- 앱 내
- 서비스 관리
- 인프라스트럭처
- 애플리케이션 성능
- APM
- Continuous Profiler
- 스팬 시각화
- 데이터 스트림 모니터링
- 데이터 작업 모니터링
- 디지털 경험
- 소프트웨어 제공
- 보안
- AI Observability
- 로그 관리
- 관리
트레이스를 로그와 연결하려면 다음 단계를 완료하세요.
다음 옵션 중 하나를 사용하여 자동 계측을 활성화합니다.
옵션 1: 라이브러리 주입:
deployment/manifest
파일에 환경 변수 DD_LOGS_INJECTION=true
를 설정합니다.옵션 2: ddtrace-run
:
DD_LOGS_INJECTION=true
를 설정합니다.ddtrace-run
(예: ddtrace-run python appname.py
)로 애플리케이션을 실행합니다.옵션 3: patch
:
ddtrace.patch(logging=True)
을 추가합니다.로그 레코드의 필수 속성을 포함하도록 로그 형식을 업데이트합니다.
dd.env
, dd.service
, dd.version
, dd.trace_id
및
dd.span_id
속성을 로그를 남기다 레코드의 형식 문자열에 포함하세요.
다음은 logging.basicConfig
를 사용해 로그 주입을 설정하는 예제입니다:
import logging
from ddtrace import tracer
FORMAT = ('%(asctime)s %(levelname)s [%(name)s] [%(filename)s:%(lineno)d] '
'[dd.service=%(dd.service)s dd.env=%(dd.env)s dd.version=%(dd.version)s dd.trace_id=%(dd.trace_id)s dd.span_id=%(dd.span_id)s] '
'- %(message)s')
logging.basicConfig(format=FORMAT)
log = logging.getLogger(__name__)
log.level = logging.INFO
@tracer.wrap()
def hello():
log.info('Hello, World!')
hello()
로그 주입에 대해 자세히 알아보려면 ddtrace 설명서를 참조하세요.
표준 라이브러리 logging
모듈을 사용하지 않는 경우 다음 코드 스니펫을 사용하여 로그 에 추적자 정보를 삽입할 수 있습니다:
from ddtrace import tracer
span = tracer.current_span()
correlation_ids = (str((1 << 64) - 1 & span.trace_id), span.span_id) if span else (None, None)
이 접근 방식을 설명하기 위해 다음 예제에서는 structlog
에서 함수를 프로세서로 정의하여 로그 출력에 추적자 필드를 추가합니다:
import ddtrace
from ddtrace import tracer
import structlog
def tracer_injection(logger, log_method, event_dict):
# get correlation ids from current tracer context
span = tracer.current_span()
trace_id, span_id = (str((1 << 64) - 1 & span.trace_id), span.span_id) if span else (None, None)
# add ids to structlog event dictionary
event_dict['dd.trace_id'] = str(trace_id or 0)
event_dict['dd.span_id'] = str(span_id or 0)
# add the env, service, and version configured for the tracer
event_dict['dd.env'] = ddtrace.config.env or ""
event_dict['dd.service'] = ddtrace.config.service or ""
event_dict['dd.version'] = ddtrace.config.version or ""
return event_dict
structlog.configure(
processors=[
tracer_injection,
structlog.processors.JSONRenderer()
]
)
log = structlog.get_logger()
로거가 구성되면 함수 로그 이벤트를 실행해 삽입된 추적 정보를 얻을 수 있습니다.
>>> traced_func()
{"event": "In tracer context", "dd.trace_id": 9982398928418628468, "dd.span_id": 10130028953923355146, "dd.env": "dev", "dd.service": "hello", "dd.version": "abc123"}
참고: Datadog 로그 통합을 사용하지 않고 로그, 커스텀 로그를 파싱하는 경우 규칙이 dd.trace_id
와 dd.span_id
문자열로 파싱되고 트레이스 리매퍼를 사용하여 리매핑되고 있는지 확인해야 합니다. 자세한 내용은 트레이스 ID 패널에 연결된 로그 표시되지 않음을 참조하세요.
파이썬(Python) 로깅 문서를 참조하여 파이썬(Python) 로그 통합이 적절하게 설정되어 파이썬(Python) 로그가 자동으로 파싱되는지 확인할 수 있습니다.