[Android]Android 直接打开log的一种方法
16lz
2021-01-23
针对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;
}
更多相关文章
- Android 自定义ListView实现Item左右滑动删除
- 自定义android Intent Action与继承TextView形成一个动态改变tex
- Android 自定义通知Notification 适配不同背景颜色
- android 最简单的自定义控件 自定义view
- Android 自定义控件的简单实现
- Android之Toast自定义管理
- Android 自定义阴影
- 如何检查 Android 应用的内存使用情况