android 开发中的Log

原创 2012年03月30日 11:19:18

android各层中加入log语句的方法整理如下.

1. Android java代码

(a) 导入log包

   import android.util.Log;

(b) 定义log标签 

private static final String TAG = "DeviceStorageMonitorService";

当然我们也可以定义自己的标签, 以便在从上到下中, 只打印我们自己关注的log

private static final String MYTAG = "MytagTest";

(c) 添加log语句, Log的输出有 : v, i, d, w, e 五种级别


d)打印相应标签的log信息 ,只需要敲入如下命令即可.

logcat -s MytagTest

2.Kernel代码  printk

#include <linux/printk.h>

  #define DBG(x...)   printk(x)

  DBG("%d::%s acc_irq=%d\n",__LINE__, __func__, switch_data->acc_irq);



/* If you are writing a driver, please use dev_dbg instead */
#if defined(DEBUG)
#define pr_debug(fmt, ...) \
    printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__)
#elif defined(CONFIG_DYNAMIC_DEBUG)
/* dynamic_pr_debug() uses pr_fmt() internally so we don't need it here */
#define pr_debug(fmt, ...) \
    dynamic_pr_debug(fmt, ##__VA_ARGS__)
#else
#define pr_debug(fmt, ...) \
    no_printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__)
#endif


for example : --------------------------->      pr_debug("kobject: '%s' (%p): %s\n",    kobject_name(kobj), kobj, __func__);



3. NDK开发 jni C代码

    #include<android/log.h>

   static const char *TAG="libgpio"

   #define LOGI(fmt,args...) ((void) __android_log_print(ANDROID_LOG_INFO,TAG,fmt,##args)

  #define LOGD(fmt,args...) ((void) __android_log_print(ANDROID_DEBUG_INFO,TAG,fmt,##args)

   #define LOGE(fmt,args...) ((void) __android_log_print(ANDROID_ERROR_INFO,TAG,fmt,##args)

   LOGI("open path=%s",path)



4.Android c/c++代码

在各种jni, hal层, 驱动层都是c和c++的代码, 在这里插入log, 可以帮助我们找到上层调用下来的参数是多少, 调用的是哪个具体函数等.

(a) 添加tag标签,

#define LOG_TAG "LightSensor"

(b) 引入log库

#include <utils/Log.h>

(c) 加入log语句

在这一步中, 和java不同的是, 不能加入不同的tag标签只能用当前源文件的标签,即 LOG_TAG

LOGI("LightSensor.cpp -> readEvent() : event->value = %d", event->value);

5. 在mk文件中加入log

很多人都不知道, mk文件在运行的时候(也就是android源码编译的时候)也可以输出log, 这大大的方便我们调试编译信息.

在make文件中有两种log级别error和warning :

$(error TEXT...)
$(warning TEXT...)

用error可以准确定位我们需要的log信息, 因为编译会终止, 一般来说终止的地方会有我们的log信息,

warning不会终止在我们的log信息上, 大家可以根据自己的情况来选择.

另外,还可以在编译输出的log语句中加入mk定义的变量信息

举例, 比如我们需要知道libsensors目录下的so编译后叫什么名字, 通过在此目录下的android.mk文件中加入以下代码来输出log:

在LOGCAL_MODULE 的定义之后, 写上

$(error module is $(LOCAL_MODULE))

输出结果:

hardware/sansung/libsensors/Android.mk:27: *** module is Sensors.sansung. Stop.

相关文章推荐

Android之使用串口通信及协议解析

特别声明:尊重原创,原文链接:http://blog.csdn.net/junfeng120125/article/details/9328947一,android串口通信 串口通信采用一个第三方开...
  • nadeal
  • nadeal
  • 2017年06月04日 10:01
  • 337

基于Android平台的串口通信实现

摘要:串口在数据通信中应用广泛,但Android SDK指定使用Java作为第三方应用开发语言,这给C语言实现串口应用带来了困难。虽然Google Android已经发布了NDK(Native Dev...
  • llxxhm
  • llxxhm
  • 2012年11月30日 19:26
  • 5245

Android 开发技巧之Log发送UDP报文,Socket编程

和把Log写入文件的原因相同:http://blog.csdn.net/wyzxk888/article/details/7478152 就是因为Android开发过程中会出现手机offline,为...

Android 开发---LOG封装

我们在Android开发中,经常使用添加log的方法,通过分析log来判断代码的执行情况。但是,每个人都有自己的log,不删除的话代码显得特别low,但也不能操作别人添加的log,这样代码执行过程中,...

Android 开发工具类,常用方法,Log 工具,数据库,时间戳转换

Android 开发工具类,常用方法,Log 工具,数据库,时间戳转换

Android 开发入门与实战 pdf

  • 2017年10月31日 14:26
  • 35.71MB
  • 下载

android 开发宝典

  • 2017年10月17日 17:28
  • 57.4MB
  • 下载

给 Android 开发者的 RxJava 详解

前言 我从去年开始使用 RxJava ,到现在一年多了。今年加入了 Flipboard 后,看到 Flipboard 的 Android 项目也在使用 RxJava ,并且使用的场景越来越多 。...
  • shikh
  • shikh
  • 2016年09月07日 09:04
  • 440

android 开发艺术探索 源码

  • 2017年10月29日 11:20
  • 18.06MB
  • 下载

ArcGIS+for+Android 开发教程基础版

  • 2017年11月02日 11:41
  • 4MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android 开发中的Log
举报原因:
原因补充:

(最多只允许输入30个字)