[flutter] Dio_logger를 사용하여 플러터 앱에서 API 호출 오류를 디버깅하는 방법

flutter

플러터(Flutter) 앱을 개발하다 보면 API 호출 중에 발생하는 오류를 디버깅해야 할 때가 있습니다. 이때 dio_logger 패키지를 사용하면 API 호출과 응답 로그를 확인하고 문제를 파악하는 데 도움이 됩니다. 이번 포스트에서는 dio_logger를 사용하여 플러터 앱에서 API 호출 오류를 디버깅하는 방법을 알아보겠습니다.

dio_logger 패키지 설치하기

먼저, 프로젝트에 dio_logger 패키지를 추가해야 합니다. pubspec.yaml 파일의 dependencies 섹션에 다음과 같이 패키지를 추가합니다:

dependencies:
  dio: ^3.0.0
  dio_logger: ^2.0.3

의존성을 추가한 후 터미널에서 flutter pub get 명령어를 실행하여 패키지를 설치합니다.

dio_logger 설정하기

dio_logger를 사용하기 위해 Dio 인스턴스를 생성하고 dio_logger 인터셉터를 추가해야 합니다. 다음은 기본적인 설정 방법입니다.

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

void main() {
  Dio dio = Dio();
  dio.interceptors.add(DioLogger());

  // API 호출 코드 작성
}

DioLoggerdio.interceptors에 추가하면 dio 인스턴스가 각 API 호출과 응답을 로깅합니다.

dio_logger 사용하기

이제 dio_logger가 설정되었으므로 API 호출 로그를 확인할 수 있습니다. 예를 들어, GET 요청을 보내는 경우 다음과 같이 코드를 작성할 수 있습니다.

void fetchPosts() async {
  try {
    Response response = await dio.get('https://api.example.com/posts');
    print(response.data);
  } catch (error, stacktrace) {
    print('Error: $error');
    print('Stacktrace: $stacktrace');
  }
}

API 호출이 성공하는 경우, 로그는 다음과 같이 표시됩니다:

I/flutter ( 1234): [DIO]---> GET /posts
I/flutter ( 1234): [DIO]Headers:
I/flutter ( 1234): [DIO]Authorization: Bearer xxxxxxx
I/flutter ( 1234): [DIO]Accept-Encoding: gzip, deflate
I/flutter ( 1234): [DIO]Content-Type: application/json
I/flutter ( 1234): [DIO]Connection: keep-alive
I/flutter ( 1234): [DIO]Accept-Language: en-US,en;q=0.9,ko;q=0.8
I/flutter ( 1234): [DIO]Content-Length: 0
I/flutter ( 1234): [DIO]---> END GET

I/flutter ( 1234): [DIO]<--- HTTP 200 (200)
I/flutter ( 1234): [DIO]Content-Type: application/json; charset=utf-8
I/flutter ( 1234): [DIO]Content-Disposition: inline
I/flutter ( 1234): [DIO]Server: example
I/flutter ( 1234): [DIO]X-Powered-By: PHP/7.4.1
I/flutter ( 1234): [DIO]X-RateLimit-Limit: 60
I/flutter ( 1234): [DIO]X-RateLimit-Remaining: 59
I/flutter ( 1234): [DIO]X-RateLimit-Reset: 1609882934
I/flutter ( 1234): [DIO]---> END HTTP (0-byte body)
I/flutter ( 1234): { "posts": [...] }

API 호출이 실패하는 경우, 오류 메시지와 스택 트레이스가 출력됩니다.

마무리

dio_logger를 사용하면 플러터 앱에서 API 호출 중 발생하는 오류를 디버깅하기가 더욱 쉬워집니다. 이 패키지를 사용하여 API 호출과 응답의 로그를 확인하고 문제를 파악해 보세요.

더 자세한 내용은 [dio_logger GitHub 레포지토리](https://github.com/