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),
);
);