[flutter] Dio를 사용하여 서버와의 통신 시간을 측정하여 로그로 남기는 방법을 알려주세요.

Dio는 Flutter에서 HTTP 요청을 보내는 데 사용되는 강력한 패키지입니다. 서버와의 통신 시간을 측정하고 이를 로그로 기록하는 것은 애플리케이션의 성능을 분석하고 개선하는 데 도움이 됩니다. 이를 수행하는 방법을 살펴보겠습니다.

Dio 패키지와 Logger 패키지 설치하기

먼저, dio 패키지와 서버 통신 로그를 남기기 위한 logger 패키지를 설치해야 합니다. pubspec.yaml 파일에 아래와 같이 패키지를 추가해주세요.

dependencies:
  flutter:
    sdk: flutter
  dio: ^4.0.0
  logger: ^1.0.0

이후 패키지를 설치하기 위해 터미널에서 flutter pub get 명령을 실행합니다.

Dio 인스턴스 생성 및 Logger 설정

다음으로, Dio의 인스턴스를 생성하고 Logger를 설정해야 합니다.

import 'package:dio/dio.dart';
import 'package:logger/logger.dart';

final Dio dio = Dio();
final Logger logger = Logger();

Interceptor를 활용하여 통신 시간 측정

Interceptor를 사용하여 요청과 응답 시간을 측정할 수 있습니다. 다음은 Interceptor의 활용 예시입니다.

dio.interceptors.add(InterceptorsWrapper(
  onRequest: (options, handler) {
    options.extra['requestTime'] = DateTime.now().millisecondsSinceEpoch;
    return handler.next(options);
  },
  onResponse: (response, handler) {
    final requestTime = response.requestOptions.extra['requestTime'];
    final duration = DateTime.now().millisecondsSinceEpoch - requestTime;
    logger.i('Request to ${response.requestOptions.uri} took $duration ms');
    return handler.next(response);
  },
  onError: (e, handler) {
    logger.e('Request error: $e');
    return handler.next(e);
  },
));

위의 코드에서 onRequest 함수는 요청이 시작될 때 현재 시간을 저장하고, onResponse 함수는 응답이 도착할 때 저장된 시간과 비교하여 통신 시간을 계산하고 로그에 기록합니다.

완료

이제 Dio를 사용하여 서버와의 통신 시간을 측정하여 로그에 남기는 방법을 알아보았습니다. 위의 코드를 활용하여 애플리케이션의 네트워크 성능을 모니터링하고 성능 개선에 활용할 수 있습니다.

참고문헌: