package net.bradmont.openmpd.helpers; import net.bradmont.openmpd.models.LogItem; import java.lang.System; import net.bradmont.openmpd.BuildConfig; /** * Android Log wrapper class that can use {@link String#format(String, Object...)} in logging message */ public class Log { private static long mLastTimeStamp = 0; private static boolean DEBUGGING = false; public static int d(String tag, String msg) { saveLog(tag, msg); return android.util.Log.d(tag, msg); } public static int d(String tag, String msg, Throwable tr){ saveLog(tag, msg, tr); return android.util.Log.d(tag, msg, tr); } public static int e(String tag, String msg){ saveLog(tag, msg); return android.util.Log.e(tag, msg); } public static int e(String tag, String msg, Throwable tr){ saveLog(tag, msg, tr); return android.util.Log.e(tag, msg, tr); } public static String getStackTraceString(Throwable tr){ return android.util.Log.getStackTraceString(tr); } public static int i(String tag, String msg){ saveLog(tag, msg); return android.util.Log.i(tag, msg); } public static int i(String tag, String msg, Throwable tr){ saveLog(tag, msg, tr); return android.util.Log.i(tag, msg, tr); } public static boolean isLoggable(String tag, int level){ return android.util.Log.isLoggable(tag, level); } public static int println(int priority, String tag, String msg){ saveLog(tag, msg); return android.util.Log.println(priority, tag, msg); } public static int v(String tag, String msg, Throwable tr){ saveLog(tag, msg, tr); return android.util.Log.v(tag, msg, tr); } public static int v(String tag, String msg){ saveLog(tag, msg); return android.util.Log.v(tag, msg); } public static int w(String tag, Throwable tr){ saveLog(tag, tr); return android.util.Log.w(tag, tr); } public static int w(String tag, String msg, Throwable tr){ saveLog(tag, msg, tr); return android.util.Log.w(tag, msg, tr); } public static int w(String tag, String msg){ saveLog(tag, msg); return android.util.Log.w(tag, msg); } public static int wtf(String tag, Throwable tr){ saveLog(tag, tr); return android.util.Log.wtf(tag, tr); } public static int wtf(String tag, String msg, Throwable tr){ saveLog(tag, msg, tr); return android.util.Log.wtf(tag, msg, tr); } public static int wtf(String tag, String msg){ saveLog(tag, msg); return android.util.Log.wtf(tag, msg); } private static void saveLog(String tag, Throwable tr){ saveLog(tag, getStackTraceString(tr)); } private static void saveLog(String tag, String msg, Throwable tr){ saveLog(tag, msg); saveLog(tag, getStackTraceString(tr)); } private static void saveLog(String tag, String msg){ if (DEBUGGING == true && BuildConfig.DEBUG == true){ LogItem.logError(tag, msg); } } // more efficient timestamp public static String makeTimestamp() { return formatTime(System.currentTimeMillis(), 7); } public static String formatTime(long millis, int fractionDigits) { int integerDigits = (int) Math.log10(millis / 1000.0) + 1; char[] chars = new char[integerDigits + fractionDigits + 1]; for (int i = 0; i < chars.length; i++) { chars[i] = '0'; } millis *= Math.pow(10, fractionDigits - 3); for (int i = chars.length - 1; i >= 0; i--) { if (i == integerDigits) { chars[i] = '.'; i--; } chars[i] = (char) (millis % 10); chars[i] += '0'; millis /= 10; } return new String(chars); } }