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

http://my.oschina.net/u/996206/blog/200789


针对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 {

?
1 2 3 4 5 6 jint verbose; jint debug; jint info; jint warn; jint error; jint assert ;

}; 
static levels_t levels;

static int toLevel(const char* value) 
{

?
1 2 3 4 5 6 7 8 9 10 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) {

?
1 2 3 4 5 6 7 8 9 10 11 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;

}

参考文献:地址:http://blog.csdn.net/maybe_windleave/article/details/8742178

更多相关文章

  1. [AndroidTips]Android预定义样式
  2. Android中自定义属性的使用
  3. 修改官方Twitter For Android,自定义 API
  4. Android中自定义TextView的形状--圆形-椭圆形-圆角矩形-线条
  5. android的ORMLite的sqlite自定义框架

随机推荐

  1. Android(安卓)framework——Activity的启
  2. Android中对后台任务线程性能的说明及优
  3. Android: Launch the HOME screen
  4. Android Battery一些信息获取方法
  5. Android单选按钮组(RadioGroup)的用法
  6. Android自定义Toast 解决关闭通知 Toast
  7. android判断是否连接网络
  8. Android Studio 使用中 遇到的那些奇奇怪
  9. Android TextView中android:textIsSelect
  10. Android 时间滚轴