본문 바로가기

TIL

[TIL] Alamofire 로깅(Logging)

요즘 진행하고 있는 프로젝트에서 Alamofire로 네트워크 디버깅 중인데요. 디버깅을 단순히 print() 구문으로만 진행하다 보니 디버깅 시간이 너무 오래 걸린다는 단점있었습니다. 이러한 단점을 극복하고자 로깅(Logging) 도입하였는데요. 오늘은 이 도입 과정에 대해 작성해보고자 합니다.

 

EventMonitor

Alamofire 공식 문서에 따르면 Alamofire 이벤트들에 대한 로깅 기능을 구현하려면 EventMonitor란 프로토콜을 준수해야한다고 합니다. 그렇다면 이 EventMonitor가 무엇이냐? 또, 공시 문서를 살펴보면 아래와 같이 정의되어 있습니다.

The EventMonitor protocol allows the observation and inspection of a large number of internal Alamofire events. - Alamofire - EventMonitor

 

위 정의는 다시 말하면 EventMonitor은 Alamofire 이벤트들을 관찰하고 검사할 수 있도록 도와주는 프로토콜이라는 의미입니다.

이러한 EventMonitor를 준수하는 객체를 생성하면 로깅 기능을 구현해줄 수 있습니다. 

 

Logging 구현

이제 로깅 기능을 구현해보겠습니다.

 

우선 위 사진처럼 EventMonitor 프로토콜을 준수하는 클래스를 정의해줍니다.

그 다음 공식 문서에서 권고대로 로깅 동작을 메인 스레드가 아닌 다른 스레드에서의 동작시키기 위해 DispatchQueue로 커스텀 직렬 큐를 생성해 줍니다.

 

그리고 위 사진처럼 EventMonitor 프로토콜 내부에 정의되어 있는 메서드들 중 필요한 메서드들을 필요한 시점에 호출하여 재정의해줍니다.

 

구현 결과

그러면 아래 사진과 같이 로깅 기능이 제대로 작동하는 것을 확인할 수 있습니다.

 

느낀점

지금까지 개발 공부를 하면서 로깅 기능을 들어보기마 하고 왜 사용되는지 잘 알지 못 했었는데, 이번 계기를 통해 로깅이 무엇이고, 개발에 있어 어떤 효과를 가지고 있는지에 대한 의의를 깨달을 수 있는 계기가 되었던 것 같습니다.

여기까지 읽어주셔서 감사합니다~!

 

참고 사이트

https://github.com/Alamofire/Alamofire/blob/master/Documentation/AdvancedUsage.md#using-eventmonitors (Alamofire 공식 문서 - EventMonitor)

https://yungsoyu.medium.com/swift-alamofire-advanced-usage-session-autentication-logger-5f0626529777 (EventMonitor 구현 참고 1)

https://jazz-the-it.tistory.com/36 (EventMonitor 구현 참고 2)