1. 前提:
android系统把标准输出stdout从定向到/dev/null 中,所以logcat无法查看printf()打印的log信息。
2. 实际操作:
- 使用头文件:
# include<private/logc_logging.h>
- 需要打印log使用:
__libc_format_log()
- 例子:
# include<private/logc_logging.h> //也可以是 #include "private/libc_logging.h"
xxx_func() {
/**
* int __libc_format_log(int priority, const char* tag, const char* format, ...)
*
* priority : int, 是在private/libc_logging.h定义的log的level,与java层的类似。
* 参考"/bionic/libc/bionic/private/libc_logging.h" 定义的ANDROID_LOG_DEBUG。
* tag : char* , log的Tag信息。
* format : char* , 格式化的字符串,
*/
char * tag = "DroidMage";
char * format = "%s";
char * msg = "This is for test!";
__libc_format_log(ANDROID_LOG_DEBUG, tag, format, msg);
}
Note: Google好久都没什么好的发现,有一天浏览bionic源码,发现android底层有打印log的方法。(以android源码为根目录): /bionic/libc/private/logc_logging.cpp