package me.ycdev.android.arch.utils;
import android.util.Log;
import java.io.PrintWriter;
import java.io.StringWriter;
import me.ycdev.android.arch.BuildConfig;
/**
* A wrapper class as logger.
* <p>TODO To write custom lint rules to enforce only AppLogger used instead of android.util.Log.</p>
*/
public class AppLogger {
public static final String TAG = BuildConfig.LOG_TAG;
private AppLogger() {
// nothing to do
}
public static void v(String subTag, String msg) {
if (AppConfigs.DISABLE_LOG) return;
Log.v(TAG, getLogMsg(subTag, msg));
}
public static void d(String subTag, String msg) {
if (AppConfigs.DISABLE_LOG) return;
Log.d(TAG, getLogMsg(subTag, msg));
}
public static void i(String subTag, String msg) {
if (AppConfigs.DISABLE_LOG) return;
Log.i(TAG, getLogMsg(subTag, msg));
}
public static void w(String subTag, String msg) {
if (AppConfigs.DISABLE_LOG) return;
Log.w(TAG, getLogMsg(subTag, msg));
}
public static void w(String subTag, String msg, Throwable e) {
if (AppConfigs.DISABLE_LOG) return;
Log.w(TAG, getLogMsg(subTag, msg + " Exception: " + getExceptionMsg(e)));
}
public static void e(String subTag, String msg) {
if (AppConfigs.DISABLE_LOG) return;
Log.e(TAG, getLogMsg(subTag, msg));
}
public static void e(String subTag, String msg, Throwable e) {
if (AppConfigs.DISABLE_LOG) return;
Log.e(TAG, getLogMsg(subTag, msg + " Exception: " + getExceptionMsg(e)));
}
private static String getLogMsg(String subTag, String msg) {
return "[" + subTag + "] " + msg;
}
private static String getExceptionMsg(Throwable e) {
StringWriter sw = new StringWriter(1024);
PrintWriter pw = new PrintWriter(sw);
e.printStackTrace(pw);
pw.close();
return sw.toString();
}
}