[swift] Swift Moya에서 네트워크 로그 기능 사용하기

Swift Moya는 Alamofire를 기반으로한 네트워크 라이브러리로, 네트워크 요청을 쉽게 작성하고 처리할 수 있도록 도와줍니다. 이 라이브러리를 사용하면서 네트워크 요청과 응답에 대한 로그를 확인하고 싶은 경우, Moya의 네트워크 로깅 기능을 활용할 수 있습니다.

MoyaProvider 설정

MoyaProvider 인스턴스를 생성할 때, 네트워크 로깅을 활성화하기 위해 plugins 파라미터를 설정해야 합니다. 네트워크 로깅을 위한 플러그인으로 Moya에는 Moya-Logger가 제공됩니다. 이 플러그인은 네트워크 요청과 응답을 콘솔에 로그로 출력해주는 역할을 합니다.

let provider = MoyaProvider<API>(plugins: [NetworkLoggerPlugin()])

위의 예시처럼 plugins 파라미터에 NetworkLoggerPlugin()을 추가하면, 네트워크 요청과 응답에 대한 로그가 출력됩니다.

로그 레벨 설정

Moya-Logger는 기본적으로 모든 요청 및 응답을 로깅하지만, 로그 레벨을 설정하여 특정 요청만 로깅하는 것도 가능합니다. 로그 레벨을 설정하려면 NetworkLoggerPluginconfiguration을 사용해야 합니다.

let plugin = NetworkLoggerPlugin(configuration: .init(logOptions: .verbose))
let provider = MoyaProvider<API>(plugins: [plugin])

위의 예시에서는 .verbose 로그 옵션을 사용하여 모든 요청과 응답을 로깅합니다. 다른 로그 레벨로는 .debug, .info, .warning, .error 등이 있습니다. 필요에 따라 로그 레벨을 설정하여 원하는 로그만 출력할 수 있습니다.

로그 필터링

Moya-Logger는 특정 url 패턴을 기반으로 로깅을 필터링할 수 있습니다. NetworkLoggerPluginfilterFunction을 사용하여 필터링 함수를 정의할 수 있습니다. 예를 들어, 특정 도메인의 요청만 로깅하고 싶은 경우 다음과 같이 설정할 수 있습니다.

let plugin = NetworkLoggerPlugin(filterFunction: { (target) in
    guard let urlStr = try? target.baseURL.absoluteString else { return false }
    return urlStr.contains("example.com")
})
let provider = MoyaProvider<API>(plugins: [plugin])

위의 예시에서는 baseURL이 “example.com”을 포함하는 요청만 로깅합니다. 필요에 따라 로그 필터링 함수를 정의하여 원하는 요청만 로깅할 수 있습니다.

결론

Moya-Logger를 사용하면 Swift Moya에서 간편하게 네트워크 로그를 확인할 수 있습니다. 네트워크 요청과 응답에 대한 로깅을 설정하고 싶다면, MoyaProvider 인스턴스를 생성할 때 NetworkLoggerPluginplugins 파라미터에 추가하면 됩니다. 또한 로그 레벨 설정과 로그 필터링 기능을 활용하여 필요한 로그만 출력할 수 있습니다.