.NET MAUI 로그 수집 (Log Collection)
.NET MAUI로 만든 iOS·Android 애플리케이션에서 Datadog의 Datadog.Maui 클라이언트 측 로깅 라이브러리를 이용해 로그를 Datadog로 보내 볼게요. 이 라이브러리는 다음과 같은 기능을 제공합니다.
- 로그를 기본적으로 JSON 형식으로 Datadog에 보내요.
- 관리형(managed) C# 예외를 전달해요.
- 실제 클라이언트 IP 주소와 User-Agent를 기록해요.
- 자동 대량 게시(bulk posts)로 네트워크 사용을 최적화해요.
- 전역 속성, 사용자 정보, 계정 정보로 로그를 강화(enrich)해요.
출처: 문서
본문
설정 (Setup)
-
로그를 보내기 전에 .NET MAUI 설정 문서에 따라 Datadog SDK를 초기화하세요.
DdLogs.Enable()이 실행되기 전에DdSdk.Initialize(또는.UseDatadog(...)빌더 확장)가 실행되도록 해야 해요. -
Logs 기능을 활성화하세요.
빌더 확장을 사용하는 방법:
using Datadog.Maui;
using Datadog.Maui.Configuration;
using Datadog.Maui.Hosting;
public static MauiApp CreateMauiApp()
{
var builder = MauiApp.CreateBuilder();
builder
.UseMauiApp<App>()
.UseDatadog(new DdSdkConfiguration
{
ClientToken = "<CLIENT_TOKEN>",
Environment = "<ENV_NAME>",
TrackingConsent = TrackingConsent.Granted,{% region-param key="maui_site_config" /%}
})
.UseDatadogLogs();
return builder.Build();
}
아니면 독립 실행형 API로 DdSdk.Initialize 이후에 DdLogs.Enable()을 호출해요:
using Datadog.Maui;
DdLogs.Enable();
-
다음 메서드 중 하나로 로그 항목을 보내요.
DdLogs.Debug("A debug message."); DdLogs.Info("Some relevant information?"); DdLogs.Warn("An important warning..."); DdLogs.Error("An error was met!");
로그 메시지는 Datadog Log Explorer로 전송되며, SDK 초기화 시 설정한 서비스 이름으로 표시돼요.
로그 강화하기 (Enrich your logs)
로그는 핵심 SDK에 이미 설정된 컨텍스트를 상속받아요. 모든 호출에 같은 메타데이터를 붙일 필요 없이 한 번만 설정하면 이후에 내보내지는 모든 로그가 그 메타데이터를 함께 담아요.
전역 속성 (Global attributes)
DdSdk.AddAttribute(또는 DdSdk.AddAttributes)로 추가한 속성은 호출 이후에 내보내지는 모든 로그, RUM 이벤트, 트레이스에 붙어요. 기능 플래그, 실험 ID, 릴리스 채널 같은 교차 컨텍스트(cross-cutting) 정보를 담을 때 유용합니다.
DdSdk.AddAttribute("plan", "premium");
DdSdk.AddAttribute("experiment", "new-checkout-flow");
// Remove when the context no longer applies
DdSdk.RemoveAttribute("experiment");
사용자 정보 (User information)
DdSdk.SetUserInfo로 현재 사용자의 신원을 모든 로그 줄에 붙일 수 있어요. 지원 티켓을 조사할 때 특정 사용자와 관련된 로그를 분류하기 쉬워져요.
DdSdk.SetUserInfo("user-123", "Jane Doe", "[email protected]",
new Dictionary<string, object> { { "plan", "premium" } });
전체 속성 참조는 Track user sessions 문서를 확인해 보세요.
계정 정보 (Account information)
B2B 애플리케이션에서는 DdSdk.SetAccountInfo가 계정 신원을 모든 로그에 붙여요. 사용자 정보를 대신하는 것이 아니라 함께 사용해야 해요.
DdSdk.SetAccountInfo("acct-456", "Acme Corp",
new Dictionary<string, object> { { "tier", "enterprise" } });
사용자 지정 엔드포인트 (Custom endpoint)
로컬 목업 서버, 온프레미스 Datadog 배포, 또는 회사 프록시에 대해 테스트하려면 Logs를 활성화할 때 CustomEndpoint를 전달하세요:
DdLogs.Enable(new DdLogsConfiguration
{
CustomEndpoint = "https://logs-proxy.example.com/v1/input"
});
SDK의 나머지 트래픽도 프록시로 보내야 한다면 SDK 자체에 ProxyConfiguration을 설정하세요. 고급 구성 > 프록시 구성 문서를 참고하세요.
배치 수집 (Batch collection)
모든 로그는 먼저 로컬 기기에 배치 단위로 저장돼요. 각 배치는 인테이크(intake) 규격을 따릅니다. 네트워크를 사용할 수 있고 배터리가 충분해서 Datadog SDK가 최종 사용자 경험에 영향을 주지 않을 때 배치가 전송돼요. 애플리케이션이 포그라운드에서 실행 중일 때 네트워크를 사용할 수 없거나 데이터 업로드가 실패하면, 배치는 성공적으로 보낼 수 있을 때까지 보관돼요.
즉, 사용자가 오프라인 상태로 애플리케이션을 열어도 데이터가 손실되지 않는다는 뜻이에요.
디스크의 데이터는 너무 오래되면 자동으로 삭제돼요. 이렇게 해서 SDK가 디스크 공간을 너무 많이 차지하지 않게 해요.
데이터가 Datadog에 업로드되기 전에는 애플리케이션의 캐시 디렉터리에 평문(cleartext)으로 저장돼요.