(이 게시물을 최종본이 아닙니다. 개발하면서 점점 달라질 수 있으니 참고해주세요 ㅇ.<)
-- 첫 게시 : 20.11.06 --
빠르게 결과물부터 보여드리면 이렇습니다 <<
특히 액티비티의 이동이 많아지면, 일일히 액티비티 이름을 찍을 필요도 없고, 내가 보고 싶은 디버그 코드만 볼 수 있어요.
처음 목적은 디버그 코드를, 앱을 배포할 때 보여지지 않도록 하고 싶었어요. 이것도 다 메모리 낭비잖아요 ^-ㅠ
그래서 다음 블로그를 기반으로 제작했습니다.
다만 여기 코드의 경우 는 메세지만 노출하고, 내가 보고 싶은 특정 로그를 찍지 않는 단점이 있어요. 그래서 내가 보고 싶은 값을 출력하는 유틸을 제작했습니다.
-.. util / DlogUtil.java
package com.mary.homingbird.util;
import android.util.Log;
public class DlogUtil {
public static boolean debugMode = true;
public static final void d(String TAG, Object object) {
if (debugMode) {
Log.d(TAG, buildMessage(object));
}
}
private static String buildMessage(Object object) {
StackTraceElement ste = Thread.currentThread().getStackTrace()[4];
StringBuilder sb = new StringBuilder();
sb.append("DlogUtil");
sb.append(" :: ");
sb.append(ste.getFileName().replace(".java", ""));
sb.append(" :: ");
sb.append(String.valueOf(object));
return sb.toString();
}
}
이러면 마지막 배포시에 앞의 debugMode 코드만 false로 변경해주면 출력이 되지 않겠죠.
이 때, 우리가 가지고 오는 값이 문자열일지, 정수형일지, 배열일지 알 수 없어서, 받아오는 값을 object로 가져오고, String.valueOf 함수를 이용해서 값을 강제로 문자열로 변환시켜서 StringBuilder에 append 시킵니다.
같은 방식으로 logE나 logi 등도 만들 수 있겠어요~ 하지만 저는 디버그 로그만 필요해서 d만 만든거랍니다.
-- 수정 : 21.01.07 --
으어 요즘 코틀린도 하니까 코틀린 코드도 첨부하고 갑니다 (쫑쫑)
package com.mary.kotlinprojectstudy.util
import android.util.Log
object DlogUtil {
var debugMode = true
fun d(TAG: String?, `object`: Any) {
if (debugMode) {
Log.d(TAG, buildMessage(`object`))
}
}
private fun buildMessage(`object`: Any): String {
val ste = Thread.currentThread().stackTrace[4]
val sb = StringBuilder()
sb.append("DlogUtil")
sb.append(" :: ")
sb.append(ste.fileName.replace(".java", ""))
sb.append(" :: ")
sb.append(`object`.toString())
return sb.toString()
}
}
반응형
'Project > 안드로이드 프로젝트(HomingBird)' 카테고리의 다른 글
Android Studio, Java ] Edit text color 변경(밑줄, 커서, 하이라이트 등) (0) | 2020.11.24 |
---|---|
Android Studio, JAVA, Google Firebase] 한번의 매서드로, 세 개의 쿼리를 처리하기 (0) | 2020.11.10 |
Android Studio, JAVA] 랜덤함수를 이용해 유저 고유 코드를 만들고 저장하기 (1) | 2020.11.09 |
Android Studio, JAVA] Material Design / Drawer Navigation에서, 기기에 따라 동적으로 메뉴를 가운데 두는 방법 (0) | 2020.11.09 |
HomingBird Project 0. 개요. (0) | 2020.11.06 |