每个android.util.Log提供了一种启用/禁用日志的方法:
public static native boolean isLoggable(String tag, int level);
默认情况下,仅在设备中设置了setprop之后,方法isLoggable(...)才会返回false:
adb shell setprop log.tag.MyAppTag DEBUG
这意味着可以打印出DEBUG级别以上的任何日志。参考android doc:
检查指定标签的日志是否可在指定级别记录。任何标签的默认级别都设置为INFO。这意味着将记录高于或包括INFO的任何级别。在调用记录方法之前,应检查是否应记录标签。您可以通过设置系统属性:'setprop log.tag来更改默认级别。'级别为VERBOSE,DEBUG,INFO,WARN,ERROR,ASSERT或SUPPRESS。SUPPRESS将关闭标签的所有日志记录。您还可以创建一个其中包含以下内容的local.prop文件:'log.tag。='并将其放置在/data/local.prop中。
因此,我们可以使用自定义日志工具:
public final class Dlog
{
public static void v(String tag, String msg)
{
if (Log.isLoggable(tag, Log.VERBOSE))
Log.v(tag, msg);
}
public static void d(String tag, String msg)
{
if (Log.isLoggable(tag, Log.DEBUG))
Log.d(tag, msg);
}
public static void i(String tag, String msg)
{
if (Log.isLoggable(tag, Log.INFO))
Log.i(tag, msg);
}
public static void w(String tag, String msg)
{
if (Log.isLoggable(tag, Log.WARN))
Log.w(tag, msg);
}
public static void e(String tag, String msg)
{
if (Log.isLoggable(tag, Log.ERROR))
Log.e(tag, msg);
}
}