[flutter] pretty_dio_logger를 사용한 멀티스레드 처리 방법

이번 포스트에서는 flutter 애플리케이션에서 pretty_dio_logger를 사용하여 멀티스레드에서의 로깅 처리 방법에 대해 알아보겠습니다.

pretty_dio_logger란?

pretty_dio_logger는 Dio 클라이언트의 네트워크 요청 및 응답을 로깅하기 위한 라이브러리로, 요청과 응답을 색상을 이용하여 깔끔한 형태로 출력해주는 기능을 제공합니다.

멀티스레드에서 pretty_dio_logger 사용하기

만약 애플리케이션이 멀티스레드로 동작하고, 각 스레드마다 pretty_dio_logger를 사용하여 네트워크 로깅을 처리하려면 어떻게 해야할까요?

여러 스레드에서 pretty_dio_logger를 사용하고자 한다면, 각각의 pretty_dio_logger 인스턴스를 만들어야 합니다. 각 스레드에서 요청을 보낼 때 해당하는 pretty_dio_logger 인스턴스를 사용하여 로깅합니다.

아래는 pretty_dio_logger 인스턴스를 만들고, Dio 클라이언트와 연결하여 멀티스레드 처리를 하는 예제 코드입니다.

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

void main() async {
  final dio = Dio();
  final logger = PrettyDioLogger(
    requestHeader: true,
    requestBody: true,
    responseBody: true,
    responseHeader: true,
    error: true,
  );
  dio.interceptors.add(logger);

  // 멀티스레드 예시
  await Future.wait([
    sendRequest(dio, logger),
    sendRequest(dio, logger),
  ]);
}

Future<void> sendRequest(Dio dio, PrettyDioLogger logger) async {
  final response = await dio.get('https://www.example.com');
  print(response.data);
  logger.clearLogs();
}

위 예제에서는 sendRequest 함수가 두 번 호출되며, 각 호출에서는 같은 Dio 클라이언트와 logger를 사용하고 있습니다.

이처럼, 각 스레드에서는 독립적인 pretty_dio_logger 인스턴스를 사용하여 요청과 응답을 로깅할 수 있습니다.

멀티스레드에서 pretty_dio_logger를 이용하여 네트워크 로깅을 처리할 때, 각 스레드마다 독립된 인스턴스를 사용하도록 유의하시기 바랍니다.

이상으로 멀티스레드에서 pretty_dio_logger를 사용하는 방법에 대해 알아보았습니다. 감사합니다!