便宜点的网站空间,网页网站开发大概多少钱,购物网站建设开题报告,国外交互设计网站欣赏一 .logcat命令介绍
android log系统: logcat介绍 :
logcat是android中的一个命令行工具#xff0c;可以用于得到程序的log信息.
二.C/Clogcat访问接口
Android系统中的C/C日志接口是通过宏来使用的。在system/core/include/android/log.h定义了日志的级别#xff1a;
/…一 .logcat命令介绍
android log系统: logcat介绍 :
logcat是android中的一个命令行工具可以用于得到程序的log信息.
二.C/Clogcat访问接口
Android系统中的C/C日志接口是通过宏来使用的。在system/core/include/android/log.h定义了日志的级别
/** Android log priority values, in ascending priority order.*/
typedef enum android_LogPriority {ANDROID_LOG_UNKNOWN 0,ANDROID_LOG_DEFAULT, /* only for SetMinPriority() */ANDROID_LOG_VERBOSE,ANDROID_LOG_DEBUG,ANDROID_LOG_INFO,ANDROID_LOG_WARN,ANDROID_LOG_ERROR,ANDROID_LOG_FATAL,ANDROID_LOG_SILENT, /* only for SetMinPriority(); must be last */
} android_LogPriority;
在system/core/include/cutils/log.h中定义了对应的宏如对应于ANDROID_LOG_VERBOSE的宏LOGV
/** This is the local tag used for the following simplified* logging macros. You can change this preprocessor definition* before using the other macros to change the tag.*/
#ifndef LOG_TAG
#define LOG_TAG NULL
#endif/** Simplified macro to send a verbose log message using the current LOG_TAG.*/
#ifndef LOGV
#if LOG_NDEBUG
#define LOGV(...) ((void)0)
#else
#define LOGV(...) ((void)LOG(LOG_VERBOSE, LOG_TAG, __VA_ARGS__))
#endif
#endif/** Basic log message macro.** Example:* LOG(LOG_WARN, NULL, Failed with error %d, errno);** The second argument may be NULL or to indicate the global tag.*/
#ifndef LOG
#define LOG(priority, tag, ...) \LOG_PRI(ANDROID_##priority, tag, __VA_ARGS__)
#endif/** Log macro that allows you to specify a number for priority.*/
#ifndef LOG_PRI
#define LOG_PRI(priority, tag, ...) \android_printLog(priority, tag, __VA_ARGS__)
#endif/** ** The stuff in the rest of this file should not be used directly.*/
#define android_printLog(prio, tag, fmt...) \__android_log_print(prio, tag, fmt) 因此如果要使用C/C日志接口只要定义自己的LOG_TAG宏和包含头文件system/core/include/cutils/log.h就可以了 #define LOG_TAG MY LOG TAG #include cutils/log.h 就可以了例如使用LOGV LOGV(This is the log printed by LOGV in android user space.);
三.Java logcat访问接口
Android系统在Frameworks层中定义了Log接口frameworks/base/core/java/android/util/Log.java
................................................public final class Log {................................................/*** Priority constant for the println method; use Log.v.*/public static final int VERBOSE 2;/*** Priority constant for the println method; use Log.d.*/public static final int DEBUG 3;/*** Priority constant for the println method; use Log.i.*/public static final int INFO 4;/*** Priority constant for the println method; use Log.w.*/public static final int WARN 5;/*** Priority constant for the println method; use Log.e.*/public static final int ERROR 6;/*** Priority constant for the println method.*/public static final int ASSERT 7;.....................................................public static int v(String tag, String msg) {return println_native(LOG_ID_MAIN, VERBOSE, tag, msg);}public static int v(String tag, String msg, Throwable tr) {return println_native(LOG_ID_MAIN, VERBOSE, tag, msg \n getStackTraceString(tr));}public static int d(String tag, String msg) {return println_native(LOG_ID_MAIN, DEBUG, tag, msg);}public static int d(String tag, String msg, Throwable tr) {return println_native(LOG_ID_MAIN, DEBUG, tag, msg \n getStackTraceString(tr));}public static int i(String tag, String msg) {return println_native(LOG_ID_MAIN, INFO, tag, msg);}public static int i(String tag, String msg, Throwable tr) {return println_native(LOG_ID_MAIN, INFO, tag, msg \n getStackTraceString(tr));}public static int w(String tag, String msg) {return println_native(LOG_ID_MAIN, WARN, tag, msg);}public static int w(String tag, String msg, Throwable tr) {return println_native(LOG_ID_MAIN, WARN, tag, msg \n getStackTraceString(tr));}public static int w(String tag, Throwable tr) {return println_native(LOG_ID_MAIN, WARN, tag, getStackTraceString(tr));}public static int e(String tag, String msg) {return println_native(LOG_ID_MAIN, ERROR, tag, msg);}public static int e(String tag, String msg, Throwable tr) {return println_native(LOG_ID_MAIN, ERROR, tag, msg \n getStackTraceString(tr));}................................................................../**hide */ public static native int println_native(int bufID,int priority, String tag, String msg);
}
因此如果要使用Java日志接口只要在类中定义的LOG_TAG常量和引用android.util.Log就可以了 private static final String LOG_TAG MY_LOG_TAG; Log.i(LOG_TAG, This is the log printed by Log.i in android user space.);
四.logcat命令参数 参数 描述 -b buffer加载一个可使用的日志缓冲区供查看比如event和radio。默认值是main-c清除缓冲区中的全部日志并退出清除完后可以使用-g查看缓冲区-d将缓冲区的log转存到屏幕中然后退出-f filename将log输出到指定的文件中文件名.默认为标准输出stdout-g打印日志缓冲区的大小并退出-n count设置日志的最大数目count默认值是4需要和-r选项一起使用-r kbytes没kbytes时输出日志默认值是16需要和-f选项一起使用-s设置过滤器-v format设置输出格式的日志消息。默认是短暂的格式。支持的格式列表
//将缓冲区的log打印到屏幕并退出adb logcat -d//清除缓冲区logtestCase运行前可以先清除一下adb logcat -c//打印缓冲区大小并退出adb logcat -g//输出logadb logcat -f /data/local/tmp/log.txt -n 10 -r 1