[Android]Android 直接打开log的一种方法

针对Apk log内部控制方式是通过Log.isLoggable来控制的情况

Example: adb shell setprop log.tag.Finsky VERBOSE

一般code是这样写的: import android.util.Log;

public class FinskyLog { public static final boolean DEBUG = Log.isLoggable(TAG, 2); private static String TAG = "Finsky";

Log.isLoggable的实现: Native层处理文件:android_util_Log.cpp (\frameworks\base\core\jni)

Java 定义在Log.java \frameworks\base\core\java\android\util public static native boolean isLoggable(String tag, int level); 非常有助于无source code apk的debug,比如google apk

struct levels_t { jint verbose; jint debug; jint info; jint warn; jint error; jint assert; }; static levels_t levels;

static int toLevel(const char* value) { switch (value[0]) { case 'V': return levels.verbose; case 'D': return levels.debug; case 'I': return levels.info; case 'W': return levels.warn; case 'E': return levels.error; case 'A': return levels.assert; case 'S': return -1; // SUPPRESS } return levels.info; }

static jboolean isLoggable(const char* tag, jint level) { String8 key; key.append(LOG_NAMESPACE); key.append(tag);

char buf[PROPERTY_VALUE_MAX];
if (property_get(key.string(), buf, "") <= 0) {
    buf[0] = '\0';
}

int logLevel = toLevel(buf);
return logLevel >= 0 && level >= logLevel;

}

转载于:https://my.oschina.net/u/996206/blog/200789

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值