[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를 사용하여 서버와의 통신 시간을 측정하여 로그에 남기는 방법을 알아보았습니다. 위의 코드를 활용하여 애플리케이션의 네트워크 성능을 모니터링하고 성능 개선에 활용할 수 있습니다.
참고문헌: