android 4.1 中的 log

来源:互联网 发布:淘宝信用管理在哪里 编辑:程序博客网 时间:2024/05/19 23:53

http://blog.csdn.net/flyingqr/article/details/6407363

Android4.1中,log有了一些打印,具体可以参考system/core/include/cutils/log.h

1. 下面是控制哪些log输出的宏

/*
 * Normally we strip ALOGV (VERBOSE messages) from release builds.
 * You can modify this (for example with "#define LOG_NDEBUG 0"
 * at the top of your source file) to change that behavior.
 */
#ifndef LOG_NDEBUG
#ifdef NDEBUG
#define LOG_NDEBUG 1
#else
#define LOG_NDEBUG 0
#endif
#endif


#ifndef LOG_NIDEBUG
#ifdef NDEBUG
#define LOG_NIDEBUG 1
#else
#define LOG_NIDEBUG 0
#endif
#endif


#ifndef LOG_NDDEBUG
#ifdef NDEBUG
#define LOG_NDDEBUG 1
#else
#define LOG_NDDEBUG 0
#endif


2. LOG_TAG定义

/*
 * 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


最终写入是

/*
 * Send a simple string to the log.
 */
int __android_log_buf_write(int bufID, int prio, const char *tag, const char *text);
int __android_log_buf_print(int bufID, int prio, const char *tag, const char *fmt, ...);


总结:
系统中的程序中输出log一般是到/dev/log/下的三个设备中,可以用logcat查看。
对于init运行的程序则有两种方法查看到log信息:
1.添加/system/bin/logwrapper,可以用logcat查看,例如
 service /system/bin/logwrapper /system/bin/rild
2.添加console,像sh一样直接输出到console
 service console /system/bin/sh
      console


Android的编译参数中,加入了-DNDEBUG,也就是默认是no debug的,当然还需要LOG_NDEBUG LOG_NIDEBUG LOG_NDDEBUG这三个宏设置。

-DNDEBUG被打上后,默认ALOGV会被禁止。

LOG_NDEBUG LOG_NIDEBUG LOG_NDDEBUG这三个宏控制

LOG_PRI(priority, tag, ...)


NDEBUG 是总开关,默认在编译参数中加入打开ALOGV: #define LOG_NDEBUG 0打开ALOGI:#define LOG_NIDEBUG 0打开ALOGD:#define LOG_NDDEBUG 0打开全部LOG:#undef NDEBUG



0 0
原创粉丝点击