[flutter] pretty_dio_logger를 사용한 로컬 데이터 저장 및 관리

Dio는 네트워크 요청에 사용되는 강력하고 다양한 기능을 갖춘 라이브러리입니다. Flutter 애플리케이션에서 네트워크 요청에 대해 로깅 및 디버깅을 하고 싶을 때, pretty_dio_logger 패키지가 유용합니다. pretty_dio_logger는 Dio 패키지의 로깅을 개선해주는 패키지로, 네트워크 요청과 응답에 대한 세부 정보를 터미널에서 보기 쉽게 출력해줍니다.

이번 글에서는 pretty_dio_logger를 활용하여 응답을 저장하고 이를 관리하는 방법에 대해 알아보겠습니다.

pretty_dio_logger 사용하기

먼저 pretty_dio_logger 패키지를 사용하기 위해 pubspec.yaml 파일에 다음을 추가하세요.

dependencies:
  dio: ^4.0.0
  pretty_dio_logger: ^1.0.2

이후 터미널에서 flutter packages get을 실행하여 패키지를 가져옵니다.

flutter packages get

pretty_dio_logger를 Dio에 적용하는 방법은 다음과 같습니다.

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

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

응답 데이터 저장하기

pretty_dio_logger를 사용하여 응답을 확인하고 싶을 때, 다음과 같이 응답 데이터를 파일로 저장할 수 있습니다.

Dio dio = Dio();
dio.interceptors.add(PrettyDioLogger(
  responseBody: true, // 응답 본문을 출력할지 여부
  formatter: JsonFormatter(), // JSON 형식의 응답만 볼 것인지 여부
  error: true, // 에러 응답을 볼 것인지 여부
  compact: false, // 요청/응답을 한 줄로 출력할지 여부
  maxWidth: 90, // 요청/응답의 최대 너비
  headers: true, // 헤더를 출력할지 여부
  logPrint: (log) async {
    // 로그를 파일로 저장
    await saveLogToFile(log);
  },
));

저장된 데이터 관리하기

저장된 응답 데이터를 관리하기 위해 내부 저장소를 활용할 수 있습니다. SharedPreferences 또는 파일 시스템을 사용하여 데이터를 저장하고 관리할 수 있습니다.

예를 들어, 파일 시스템을 이용하여 저장된 데이터를 관리하는 코드는 다음과 같습니다.

import 'dart:io';
import 'dart:convert';

void saveLogToFile(String log) async {
  // 로그를 파일로 저장
  final file = File('log.txt');
  await file.writeAsString(log);
}

Future<String> getLogFromFile() async {
  // 파일에서 로그를 불러옴
  try {
    final file = File('log.txt');
    String log = await file.readAsString();
    return log;
  } catch (e) {
    return 'Error reading log file';
  }
}

결론

pretty_dio_logger를 사용하여 네트워크 요청과 응답을 로깅하고 저장하는 방법에 대해 알아보았습니다. 이를 통해 애플리케이션의 디버깅과 데이터 관리를 보다 효율적으로 할 수 있습니다.pretty_dio_logger는 개발자들이 네트워크 통신을 이해하고 문제를 해결하는 데 도움이 되는 강력한 도구입니다.

또한, 저장된 데이터를 관리하기 위해 내부 저장소를 활용하는 방법에 대해 알아보았습니다. 이를 통해 앱의 성능을 개선하고 필요한 데이터를 관리할 수 있습니다.

pretty_dio_logger와 저장된 데이터 관리를 통해 애플리케이션의 네트워크 요청을 보다 효율적으로 관리하고 디버깅할 수 있습니다.

참고:
pub.dev - pretty_dio_logger
Flutter Dio Package