본문 바로가기
WIKI 기술 지식 베이스

Flutter 로그 수집

원문 보기 위키 갱신

Datadog의 Flutter 플러그인을 사용해 Flutter 애플리케이션에서 Datadog로 로그를 보내고 다음 기능을 활용할 수 있어요:

  • JSON 형식으로 기본 제공되는 형태로 Datadog에 로그 기록.
  • 기본 속성을 사용하고 보내는 모든 로그에 사용자 정의 속성 추가.
  • 실제 클라이언트 IP 주소와 User-Agent 기록.
  • 자동 벌크 게시로 최적화된 네트워크 사용량 활용.

출처: 문서

본문

설정

Logs용 Datadog Flutter SDK를 초기화하려면 설정을 참고하세요.

LoggingConfiguration 파라미터로 Datadog Flutter SDK를 초기화하면 DatadogLogger를 만들고 Datadog로 로그를 보낼 수 있어요.

final logConfiguration = DatadogLoggerConfiguration(
  remoteLogThreshold: LogLevel.debug,
  networkInfoEnabled: true,
);
final logger = DatadogSdk.instance.logs?.createLogger(logConfiguration);

logger?.debug("A debug message.");
logger?.info("Some relevant information?");
logger?.warn("An important warning…");
logger?.error("An error was met!");

createLogger 메서드로 서비스와 이름이 다른 추가 로거도 만들 수 있어요:

final myLogger = DatadogSdk.instance.logs?.createLogger(
  DatadogLoggerConfiguration(
    service: 'com.example.custom_service',
    name: 'Additional logger'
  )
);

myLogger?.info('Info from my additional logger.');

사용 가능한 로깅 옵션에 대한 자세한 내용은 DatadogLoggerConfiguration 클래스 문서를 참고하세요.

태그 관리

로거에 설정된 태그는 각 로거에 국한돼요.

태그 추가

DatadogLogger.addTag 메서드를 사용해 특정 로거가 보내는 모든 로그에 태그를 추가하세요:

// This adds a "build_configuration:debug" tag
logger.addTag("build_configuration", "debug")

태그 제거

DatadogLogger.removeTag 메서드를 사용해 특정 로거가 보내는 모든 로그에서 태그를 제거하세요:

// This removes any tag that starts with "build_configuration"
logger.removeTag("build_configuration")

자세한 내용은 태그 시작하기를 참고하세요.

속성 관리

로거에 설정된 속성은 각 로거에 국한돼요.

기본 속성

기본적으로 로거가 보내는 모든 로그에 다음 속성이 추가돼요:

  • http.useragent와 여기서 추출한 device, OS 속성
  • network.client.ip와 여기서 추출한 지리적 속성(country, city)
  • logger.version, Datadog SDK 버전
  • logger.thread_name, (main, background)
  • version, Info.plist 또는 application.manifest에서 추출한 클라이언트 앱 버전
  • environment, SDK를 초기화할 때 사용한 환경 이름

속성 추가

DatadogLogger.addAttribute 메서드를 사용해 특정 로거가 보내는 모든 로그에 사용자 정의 속성을 추가하세요:

logger.addAttribute("user-status", "unregistered")

value는 StandardMessageCodec 클래스가 지원하는 대부분의 유형일 수 있어요.

속성 제거

DatadogLogger.removeAttribute 메서드를 사용해 특정 로거가 보내는 모든 로그에서 사용자 정의 속성을 제거하세요:

// This removes the attribute "user-status" from all logs sent moving forward.
logger.removeAttribute("user-status")

로그 출력 사용자 정의

기본적으로 디버그 빌드에서 DatadogLogger는 모든 로그를 다음 형식으로 Flutter 콘솔에 출력해요:

[{level}] message

이 값은 DatadogLoggerConfiguration.customConsoleLogFunction을 설정해 사용자 정의할 수 있어요. 특정 레벨 아래의 로그를 필터링하려면 simpleConsolePrintForLevel로 설정하세요:

final config = DatadogLoggerConfiguration(
  // Other configuration options...
  customConsoleLogFunction: simpleConsolePrintForLevel(LogLevel.warn),
);

사용자 정의 함수를 제공해 Datadog 로그를 logger 같은 다른 로그 패키지로 전달할 수도 있어요:

var Logger logger;
void customDatadogLog(LogLevel level,
  String message,
  String? errorMessage,
  String? errorKind,
  StackTrace? stackTrace,
  Map<String, Object?> attributes,) {
    // Assuming you have a Logger and custom level mapping function:
    logger.log(mapLogLevels(level), message, error: errorKind, stackTrace: stackTrace);
}

final datadogLogger = DatadogSdk.instance.logs?.createLogger(
  DatadogLoggerConfiguration(
    // Other configuration options...
    customConsoleLogFunction: simpleConsolePrintForLevel(LogLevel.warn),
  );
);

더 알아보기 (Learn more)