[android] 안드로이드에서 네트워크 요청 로깅

안드로이드 앱을 개발할 때 네트워크 요청을 디버깅하고 로깅하는 것은 매우 중요합니다. 네트워크 요청 로그를 기록함으로써 앱의 동작을 추적하고 문제를 분석할 수 있습니다.

1. OkHttp Interceptor를 사용한 네트워크 요청 로깅

OkHttp 라이브러리의 Interceptor를 사용하면 네트워크 요청 및 응답을 가로채고 로깅할 수 있습니다. 다음은 이를 구현하는 간단한 예제입니다.

import okhttp3.Interceptor;
import okhttp3.Response;
import java.io.IOException;

public class LoggingInterceptor implements Interceptor {
  @Override public Response intercept(Chain chain) throws IOException {
    Request request = chain.request();

    long startTime = System.nanoTime();
    // Request 로깅
    Log.d("Network", String.format("Sending request %s on %s%n%s",
        request.url(), chain.connection(), request.headers()));

    Response response = chain.proceed(request);

    long endTime = System.nanoTime();
    // Response 로깅
    Log.d("Network", String.format("Received response for %s in %.1fms%n%s",
        response.request().url(), (endTime - startTime) / 1e6d, response.headers()));

    return response;
  }
}

위의 LoggingInterceptor 클래스는 OkHttp Interceptor를 구현하여 네트워크 요청 및 응답을 로깅합니다.

2. OkHttp 클라이언트에 Interceptor 추가

위에서 작성한 Interceptor를 OkHttp 클라이언트에 추가하여 네트워크 요청 로깅을 활성화할 수 있습니다.

import okhttp3.OkHttpClient;

OkHttpClient client = new OkHttpClient.Builder()
  .addInterceptor(new LoggingInterceptor())
  .build();

OkHttp 클라이언트를 생성할 때 addInterceptor 메서드를 사용하여 LoggingInterceptor를 추가합니다.

결론

OkHttp Interceptor를 사용하면 안드로이드 앱에서 네트워크 요청 로깅을 간단히 구현할 수 있습니다. 이를 통해 앱의 네트워크 동작을 실시간으로 추적하고 디버깅하는 데 도움이 됩니다.

참고 자료