[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를 사용하면 안드로이드 앱에서 네트워크 요청 로깅을 간단히 구현할 수 있습니다. 이를 통해 앱의 네트워크 동작을 실시간으로 추적하고 디버깅하는 데 도움이 됩니다.
참고 자료
- OkHttp Interceptor: https://square.github.io/okhttp/interceptors/
- Android Logging: https://developer.android.com/reference/android/util/Log