388일차 - Android Log Library: XLog

2022. 1. 27. 23:45Diary/300~400

https://github.com/elvishew/xLog

 

GitHub - elvishew/xLog: Android logger, pretty, powerful and flexible, log to everywhere, save to file, all you want is here.

Android logger, pretty, powerful and flexible, log to everywhere, save to file, all you want is here. - GitHub - elvishew/xLog: Android logger, pretty, powerful and flexible, log to everywhere, sav...

github.com

 

안드로이드에는 여러 로그 라이브러리가 존재하지만, 그 중에서 나는 XLog나 DLog를 사용한다.

DLog의 장점은 로그를 찍은 스택을 알려주는 기능이 있고, XLog는 로그파일을 저장할 때, 용이하다.

나는 스택과 저장 2가지 모두가 필요해서 XLog를 가져와서 약간의 커스텀만 진행했다.

 

 

로그는 저장용 로그와 단순 프린트용 로그 2가지 종류로 나눴다. 단순 프린트용 로그의 경우에는 companion object 안에 코드를 작성했다. 이는 메모리를 최적화하는 용도라기 보다는 편의성을 위해서이다. 만약에 단순히 클래스 안에 작성하면 로그를 사용할 때, TLog().d("로그") 이러한 형식으로 작성해야한다. 이게 문제가 있는건 아니지만, 개발을 하다보면 단순히 저 괄호()를 작성하는 것조차 귀찮다. 그렇기에 TLog.d("로그") 이러한 방식으로 사용하기 위해서 companion object안에 선언해줬다. 코틀린은 자바와는 다르게 static 대신에 companion object가 있는데, 이게 스태틱같은데 스택이라고 할수는없고, 싱글톤 정도로 이해하면 편하다.

 

로그를 저장하기 위해서는 어디에 저장할 것인가의 고민거리가 생기는데, 나는 제일 만만한 앱 캐시경로를 저장 경로로 잡았다. 다만, 캐시경로를 가져오기 위해서는 context를 받아와야하는데 이게 정말 어쩔수가 없는부분이라서 사용할 때, 꽤나 불편하다. TLog(context).d("로그") 이러한 형식으로 사용해야하는데, 저 context 매개변수를 넣는 과정마저도 귀찮다.. 이를 해결하기 위한 방법도 있기는 하지만, 그정도로 할 필요성은 없기 때문에 여기서 마친다.