안드로이드에서의 Log

David·2024년 3월 11일
0
post-thumbnail

🤔 앱에서 로그 필요성

앱에서 로그를 넣는것은 개발하면서
특정 값의 검증이나 추적하고 싶을 때
잠깐 넣는 경우가 대부분 아닐까 라는 생각을 할 수 있습니다.

또한 서비스의 규모가 작으면 앱 로그의 필요성을 느끼지 못 할 수 있는데요.

그런데 서비스의 규모가 조금씩 커지고 있으면 어떨까요?

  • 앱을 통해 봐야 할 데이터가 조금씩 추가되고
  • 서버랑 통신하는 횟수가 증가하고
  • 접수되는 cs가 점점 증가하고

이럴 때 서버 혹은 클라이언트에서 단독으로 데이터를 보거나 문제를 해결하기보다
🔥빠르게 찾기 위해서 같이 데이터를 봐야하는 경우가 대다수 입니다.🔥

이럴 때 앱(클라이언트) 입장에서 로그를 설정하지 않으면
빈번하게 들어오는 확인 요청에 코드를 넣고 확인하는 과정은
리소스가 매우 많이들 수 밖에 없습니다.

그러면 어떤 기준으로 로그를 볼 수 있으면 좋을까요?

경험상 요청 및 확인이 빈번한 데이터를
기준으로 하면 좋았습니다.


📱 로그 넣기

🔧 dependencies

gson library

  • 로그 데이터 포맷을 Json으로 보기 위한 라이브러리

logger library

  • Log를 조금 더 깔끔하게 보기 위한 라이브러리

👀 HTTP 에서 Log

앱에서 HTTP Log를 보여주기 위한 구현 플로우

  1. HttpLoggingInterceptor.Logger 를 상속한 Logger 구현
  2. DI > HttpLoggingInterceptor 주입
    • 이 때 위에서 구현한 Logger를 생성자 파라미터에 주입 HttpLoggingInterceptor(구현Logger())
  3. DI > OkHttpClient
  4. DI > Retrofit

위와 같은 플로우로 구현하여 첨부한 파일처럼
HTTP Log를 볼 수 있게 설정 했습니다.


👀 Amplitude 에서 Log

앱에서 데이터를 tracking할 때 저희는 Amplitude를 사용하는데
이벤트 & 데이터가 잘 전송되었는지 확인하기 위해서는
매번 Amplitude > 로그인 > Lookup Page 에서 확인해야 했습니다.

또한 앱에서 어느 시점에 어떤 데이터를 보냈는지
확인 요청도 또한 종종 있었습니다.

이에 Amplitude도 Log 시스템을 만들어 쉽게 볼 수 있게 만들었습니다.

플로우는 다음과 같습니다.

  • Amplitude 와 VM 에서 사용할 수 있는 중간 계층 AmplitudeManager 생성
  • Amplitude 의 track() 함수를 호출했을 때 > 어떤 데이터를 보냈는지 (sent)
  • Amplitude 에 실제로 반영했는지 여부 > 데이터 + 성공여부

위와같은 플로우로 개발하여 첨부한 파일처럼
Amplitude Log를 볼 수 있게 설정 했습니다.


👀 Webview 에서 Log

컴포즈로 웹뷰를 구현하고 있어서
웹뷰 컴포넌트 내에서 로그를 설정했고

기본적으로 어떤 url이 호출됐는지 보여주고
헤더가 존재한다면 헤더를 같이 볼 수 있게 설정 했습니다.


👀 Push 에서 Log

Push는 앱이 실행중일 때와 실행중이지 않을 때가 있어
이를 classInfo 에서 상태를 확인하고
나머지는 RemoteMessage의 구조를 그대로 가져와서
볼 수 있게 설정 했습니다.

(Push 컨텐츠도 곧 올려보겠습니다 🌱)


👏🏻 마치며

구현은 어려운 부분이 아니라서
자세한 설명보다는 컨셉(?)과 틀을
어떻게 잡으면 좋을지와 로그에 필요성에
집중하여 블로그를 썼습니다.

이는 안드로이드에서 로그에 포스트가 거의 없고
어느정도 규모가 있는 회사 또는 사수가 없다면
알 수 없는 인사이트라 정리 및 공유의 느낌으로
봐주시면 좋을 것 같습니다.

더 좋은 방법이 있다면 추가하여 업데이트 하겠습니다.
(피드백은 언제나 환영입니다 🙇🏻‍♂️)

이직 후 온보딩 기간에
작업했던 로그 시스템 작업 티켓을 올리며
블로그 마치겠습니다.

profile
공부하는 개발자

0개의 댓글

관련 채용 정보