package andraus.bluetoothhidemu.util;
import java.util.HashMap;
import java.util.Map;
import android.util.Log;
/**
* Wrapper for android.util.Log. This class will check for the proper log level before writing messages to the log
* This class uses a cache in order to reduce overhead for Log.isLoggable() calls. The cache may be disabled by
* setting USE_CACHE to false.
*
* Note: to enable the logs for your tag, use:
*
* - adb shell setprop log.tag.<TAG> <LEVEL>
*
* e.g.
*
* - adb shell setprop log.tag.BluetoothKeyb DEBUG
*
*
* @author andraus
*
*/
public class DoLog {
private static boolean USE_CACHE = true;
private static Map<String, Boolean> cacheMap = new HashMap<String, Boolean>();
private static boolean isLoggable(String tag, int level) {
if (!USE_CACHE) {
return Log.isLoggable(tag, level);
} else {
String key = tag + "-" + level;
Boolean isLoggable = cacheMap.get(key);
if (isLoggable == null) {
isLoggable = Boolean.valueOf(Log.isLoggable(tag, level));
cacheMap.put(key, isLoggable);
}
return isLoggable.booleanValue();
}
}
public static void v(String tag, String msg) {
if (isLoggable(tag, Log.VERBOSE)) {
Log.v(tag, msg);
}
}
public static void v(String tag, String msg, Exception e) {
if (isLoggable(tag, Log.VERBOSE)) {
Log.v(tag, msg, e);
}
}
public static void d(String tag, String msg) {
if (isLoggable(tag, Log.DEBUG)) {
Log.d(tag, msg);
}
}
public static void d(String tag, String msg, Exception e) {
if (isLoggable(tag, Log.DEBUG)) {
Log.d(tag, msg, e);
}
}
public static void i(String tag, String msg) {
if (isLoggable(tag, Log.INFO)) {
Log.i(tag, msg);
}
}
public static void i(String tag, String msg, Exception e) {
if (isLoggable(tag, Log.INFO)) {
Log.i(tag, msg, e);
}
}
public static void w(String tag, String msg) {
if (isLoggable(tag, Log.WARN)) {
Log.w(tag, msg);
}
}
public static void w(String tag, String msg, Exception e) {
if (isLoggable(tag, Log.WARN)) {
Log.w(tag, msg, e);
}
}
public static void e(String tag, String msg) {
if (isLoggable(tag, Log.ERROR)) {
Log.e(tag, msg);
}
}
public static void e(String tag, String msg, Exception e) {
if (isLoggable(tag, Log.ERROR)) {
Log.e(tag, msg, e);
}
}
}