如何在android 系统 C/C++ 层中添加 log 信息
2013-09-18 17:11
741 查看
一般情况下,我们在 android 原始 framework 层的 C/C++ 代码中添加 log 信息非常方便:
只需要添加如下头文件 :
#define LOG_TAG "MediaRecorder"
#include <utils/Log.h>
并且在 函数中添加如下 log 输出信息(如蓝色字体显示):
status_t MediaRecorder::setCamera(const sp<ICamera>& camera)
{
LOGV("setCamera(%p)", camera.get());
if(mMediaRecorder == NULL) {
LOGE("media recorder is not initialized yet");
return INVALID_OPERATION;
}
if (!(mCurrentState & MEDIA_RECORDER_IDLE)) {
LOGE("setCamera called in an invalid state(%d)", mCurrentState);
return INVALID_OPERATION;
}
status_t ret = mMediaRecorder->setCamera(camera);
if (OK != ret) {
LOGV("setCamera failed: %d", ret);
mCurrentState = MEDIA_RECORDER_ERROR;
return ret;
}
return ret;
}
如果我们要将第三方的 C/C++ 文件移植到 framework 代码中怎么办呢,用上述方法就不一定凑效了。
我们需要在该 C/C++ 中添加
#include <android/log.h>
并且宏定义一下原始的 log 输出函数 __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG, __VA_ARGS__);
或者 __android_log_write(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__);
这样就不需要在打 log 的时候敲入那么多字符了
宏定义如下:
#define LOG_TAG "MediaRecorder"
#define LOG(...) __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG, __VA_ARGS__)
使用实例:
LOG("InitFbImage format = %d, width = %d, height = %d", format, width, height);
当然,你也可以只打印点字符信息
LOG("InitFbImage");
Log 信息查看:
所有的 log 信息都可以通过控制台输出。只要过滤 LOG_TAG 或者其它某关键字即可查看
adb logcat -s MediaRecorder
或 adb logcat | find "log"
adb logcat | grep "log"
但内核 log 例外,内核的 log 存放的目录不同
adb shell cat proc/kmsg
刚刚看到了一篇文章比较系统的讲解了 android log 系统的来龙去脉:http://blog.csdn.net/luoshengyang/article/details/6581828#comments
推荐!
http://www.360doc.com/content/11/0519/15/474846_117915969.shtml
只需要添加如下头文件 :
#define LOG_TAG "MediaRecorder"
#include <utils/Log.h>
并且在 函数中添加如下 log 输出信息(如蓝色字体显示):
status_t MediaRecorder::setCamera(const sp<ICamera>& camera)
{
LOGV("setCamera(%p)", camera.get());
if(mMediaRecorder == NULL) {
LOGE("media recorder is not initialized yet");
return INVALID_OPERATION;
}
if (!(mCurrentState & MEDIA_RECORDER_IDLE)) {
LOGE("setCamera called in an invalid state(%d)", mCurrentState);
return INVALID_OPERATION;
}
status_t ret = mMediaRecorder->setCamera(camera);
if (OK != ret) {
LOGV("setCamera failed: %d", ret);
mCurrentState = MEDIA_RECORDER_ERROR;
return ret;
}
return ret;
}
如果我们要将第三方的 C/C++ 文件移植到 framework 代码中怎么办呢,用上述方法就不一定凑效了。
我们需要在该 C/C++ 中添加
#include <android/log.h>
并且宏定义一下原始的 log 输出函数 __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG, __VA_ARGS__);
或者 __android_log_write(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__);
这样就不需要在打 log 的时候敲入那么多字符了
宏定义如下:
#define LOG_TAG "MediaRecorder"
#define LOG(...) __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG, __VA_ARGS__)
使用实例:
LOG("InitFbImage format = %d, width = %d, height = %d", format, width, height);
当然,你也可以只打印点字符信息
LOG("InitFbImage");
Log 信息查看:
所有的 log 信息都可以通过控制台输出。只要过滤 LOG_TAG 或者其它某关键字即可查看
adb logcat -s MediaRecorder
或 adb logcat | find "log"
adb logcat | grep "log"
但内核 log 例外,内核的 log 存放的目录不同
adb shell cat proc/kmsg
刚刚看到了一篇文章比较系统的讲解了 android log 系统的来龙去脉:http://blog.csdn.net/luoshengyang/article/details/6581828#comments
推荐!
http://www.360doc.com/content/11/0519/15/474846_117915969.shtml
相关文章推荐
- 如何在android 系统 C/C++ 层中添加 log 信息
- 如何在android 系统 C/C++ 层中添加 log 信息
- Android项目JNI层C/C++文件中添加LOG信息
- android-如何在系统settings里添加设置选项
- 如何在ANDROID JNI 的C++中打Log
- Android应用随系统编译makefile中如何添加so库
- Android获取系统的硬件信息、系统版本以及如何检测ROM类型
- android-如何在系统settings里添加设置选项
- LINUX系统以及ANDROID 平台log信息输出级别设置 [MTK]
- Android中如何获取系统应用程序列表与AndroidManifest.xml信息
- 如何在ANDROID JNI 的C++中打Log
- Android 如何用HttpClient 以Post方式提交数据并添加http头信息
- Android中如何修改系统信息(应用程序获得系统权限)
- Android 如何用HttpClient 以Post方式提交数据并添加http头信息
- android 5.1 如何添加一个系统service
- Android添加log信息
- repo: 创建local manifest以及如何添加app到CM/Android build系统中
- android-如何在系统settings里添加设置选项
- Android获取系统的硬件信息、系统版本以及如何检测ROM类型
- 如何添加自定义系统菜单 - C++ & MFC