[flutter] Dio_logger를 통해 로그를 저장하는 방법과 저장된 로그를 나중에 검색하는 방법

Dio_logger는 Dio 패키지의 interceptor로서, 네트워크 요청 및 응답의 로그를 자세히 기록하고 저장하는 기능을 제공합니다. 이 글에서는 Dio_logger를 사용하여 로그를 저장하는 방법과 저장된 로그를 나중에 검색하는 방법에 대해 알아보겠습니다.

Dio_logger 설치

다음과 같이 dio_logger 패키지를 pubspec.yaml 파일에 추가합니다:

dependencies:
  dio: ^4.0.0
  dio_logger: ^4.0.0

그리고 패키지를 다운로드 받기 위해 터미널에서 flutter pub get 명령을 실행합니다.

Dio_logger 사용하기

Dio_logger는 Dio 객체에 interceptor로 추가되어야 합니다. 다음은 Dio_logger를 추가하는 방법입니다:

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

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

  // 나머지 코드는 여기에 작성합니다.
}

Dio_logger는 기본적으로 로그를 콘솔에 출력하지만, 이를 파일에 저장하려면 outputPath 매개변수를 사용해야 합니다. 다음은 로그를 파일에 저장하는 예제입니다:

import 'package:dio_logger/dio_logger.dart';

void main() {
  final dio = Dio();
  dio.interceptors.add(DioLogger(
    request: true,
    requestHeader: true,
    requestBody: true,
    responseHeader: true,
    responseBody: true,
    error: true,
    outputPath: './logs/dio_log.txt', // 로그를 저장할 파일 경로
  ));

  // 나머지 코드는 여기에 작성합니다.
}

위의 예제에서 outputPath는 로그를 저장할 파일의 경로입니다. 기존에 존재하지 않는 디렉토리라면, 해당 디렉토리가 자동으로 생성됩니다.

저장된 로그 검색하기

로그가 파일에 저장되었다면, 해당 파일을 열어 로그를 검색할 수 있습니다. 로그는 텍스트 파일로 저장되므로, 간단한 텍스트 편집기로 열어 내용을 확인할 수 있습니다.

또한, Dart에서 파일을 읽는 방법을 사용하여 로그를 검색할 수도 있습니다. 다음은 로그 파일을 읽어온 후 특정 문자열을 검색하는 예제입니다:

import 'dart:io';

void main() async {
  final file = File('./logs/dio_log.txt');
  final contents = await file.readAsString();

  // 로그 검색
  if (contents.contains('검색어')) {
    // 검색어가 포함된 로그를 찾았을 때 처리하는 로직을 작성합니다.
  } else {
    // 검색어를 찾지 못했을 때 처리하는 로직을 작성합니다.
  }
}

위의 예제에서는 readAsString 메서드를 사용하여 파일 내용을 읽어옵니다. 이후, contains 메서드를 이용하여 검색어가 포함되어 있는지 확인할 수 있습니다.

결론

Dio_logger를 사용하면 네트워크 요청과 응답에 대한 자세한 로그를 저장하고 검색할 수 있습니다. 로그를 파일에 저장하여 추후 검색이 용이하도록 관리할 수 있습니다. Dio_logger의 다양한 옵션을 활용하여 원하는 형식의 로그를 저장하고, 파일을 읽어와 원하는 내용을 검색하는 방법을 익히세요.

참고 자료: