Android系统开发中log的使用方法及简单的原理

 更新时间:2013年01月28日 11:01:26   作者:  
LOG是广泛使用的用来记录程序执行过程的机制,它既可以用于程序调试,也可以用于产品运营中的事件记录;在平时开发过程中经常需要与log打交道,所以很有必要了解log的使用方法及简单的原理,感兴趣的朋友可以了解下啊
在程序开发过程中,LOG是广泛使用的用来记录程序执行过程的机制,它既可以用于程序调试,也可以用于产品运营中的事件记录。在Android系统中,提供了简单、便利的LOG机制,开发人员可以方便地使用。在平时开发过程中经常需要与log打交道,所以很有必要了解log的使用方法及简单的原理。

1、linux内核的log输出
在标准的linux内核开发过程中,使用printk,这是一个与printf输出打印齐名的函数,同样提供格式化输出功能,只是其有
打印级别且将信息保存到/proc/kmsg日志中,使用cat命令查看其信息[cat/proc/kmsg]
复制代码 代码如下:

<SPANstyle="COLOR:#003333;FONT-SIZE:14px">#defineKERN_EMERG"<0>"/*systemisunusable*/
#defineKERN_ALERT"<1>"/*actionmustbetakenimmediately*/
#defineKERN_CRIT"<2>"/*criticalconditions*/
#deinfeKERN_ERR"<3>"/*errorconditions*/
#deinfeKERN_WARNING"<4>"/*warningconditions*/
#deinfeKERN_NOTICE"<5>"/*normalbutsignificantcondition*/
#deinfeKERN_INFO"<6>"/*informational*/
#deinfeKERN_DEBUG"<7>"/*debug-levelmessages*/</SPAN>

2、android中log输出
Android系统在用户空间中提供了轻量级的logger日志系统,它是在内核中实现的一种设备驱动,与用户空间的logcat工具配合使用能够方便地跟踪调试程序。
Android系统中的C/C++日志接口是通过宏来使用的。在system/core/include/android/log.h定义了日志的级别:
/*
*Androidlogpriorityvalues,inascendingpriorityorder.
*/
typedefenumandroid_LogPriority{
ANDROID_LOG_UNKNOWN=0,
ANDROID_LOG_DEFAULT,/*onlyforSetMinPriority()*/
ANDROID_LOG_VERBOSE,
ANDROID_LOG_DEBUG,
ANDROID_LOG_INFO,
ANDROID_LOG_WARN,
ANDROID_LOG_ERROR,
ANDROID_LOG_FATAL,
ANDROID_LOG_SILENT,/*onlyforSetMinPriority();mustbelast*/
}android_LogPriority;

为了使用方便,在system/core/include/cutils/log.h定义了相对应的宏:
#defineLOGV(...)((void)LOG(LOG_VERBOSE,LOG_TAG,__VA_ARGS__))
#defineLOGD(...)((void)LOG(LOG_DEBUG,LOG_TAG,__VA_ARGS__))
#defineLOGI(...)((void)LOG(LOG_INFO,LOG_TAG,__VA_ARGS__))
#defineLOGW(...)((void)LOG(LOG_WARN,LOG_TAG,__VA_ARGS__))
#defineLOGE(...)((void)LOG(LOG_ERROR,LOG_TAG,__VA_ARGS__))
因为如果需要使用log输出,包含其头文件:#include<cutils/log.h>并link其动态库:liblog.so即可
#defineLOG_TAG"XX_LOG_TAG"//这里可以定义其输出的TAG
#include<cutils/log.h>
JAVA层打印:
importandroid.util.Log;
privatestaticfinalStringTAG="XX_LOG_TAG";
Log.e(TAG,"ThisistheerrorlogprintedbyLog.iinandroiduserspace.");

3、盒子上如何获取log
a、进入shell获取log
adbkill-server
adbconnectdest-ip
adbshell【登录shell】
mount-oremount/system/system【改变权限】
logcat>>1.log
命令行输入CTRL+C回到cmd命令行,adbpullpath/1.log
b、直接在cmd命令行获取log
adbconnect连上后;
adbshell
adblogcat>>path/1.log
操作完毕后
命令行输入CTRL+C回到cmd命令行,adbpullpath/1.log
c、在terminal终端直接输出log
回车切到shell
logcat[此时即可看到打印]

4、Eclipse环境下运行(安装了Android插件),那么直接可以在Eclipse就可以查看了
 

5、常用技巧
1、logcat中会打印【输出级别+LOG_TAG名字+进程字+打印的信息】可以充分利用这些信息分析问题
I/SystemServer(939):ActivityManager
I/ActivityManager(939):Memoryclass:96
E/AndroidRuntime(939):ErrorreportingWTF
第一列由Log.i(e/w..决定)或者LOGI/LOGE/LOGW...
第二列由LOG_TAG/TAG(JAVA)中决定,可以对于同一组模块前相同的前缀[xxx]funtion这种命名
第三列是系统进程号getpid()这值,打印线程值pthread_slef()

最后的就是自行增加的打印信息
2、调效效率或者执行时间
1、建议重点的打印增加前缀,方便查找。以[######]
2、直接利用logcat输出时间,调试执行速度,分析效率
logcat-vtime【Displaythedate,invocationtime,priority/tag,andPIDoftheoriginatingprocess.】

相关文章

  • Android开发悬浮窗踩坑解决

    Android开发悬浮窗踩坑解决

    这篇文章主要为大家介绍了Android悬浮窗踩坑解决示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • Android中asset和raw的区别详解

    Android中asset和raw的区别详解

    本文重点给大家介绍android中asset和raw的区别,以及在使用过程中需要注意点,非常不错,具有参考借鉴价值,感兴趣的朋友一起看下吧
    2016-07-07
  • Android播放多张图片形成的一个动画示例

    Android播放多张图片形成的一个动画示例

    这篇文章主要介绍了Android播放多张图片形成的一个动画实现方法,结合实例形式分析了Android逐帧播放动画图片及ImageView控件的相关使用技巧,需要的朋友可以参考下
    2016-10-10
  • Android 利用方向传感器实现指南针具体步骤

    Android 利用方向传感器实现指南针具体步骤

    Android利用方向传感器实现指南针功能,听起来还不错吧,下面与大家分享下具体的实现步骤,感兴趣的朋友可以参考下哈
    2013-06-06
  • Android TV开发:实现3D仿Gallery效果的实例代码

    Android TV开发:实现3D仿Gallery效果的实例代码

    这篇文章主要介绍了Android TV开发:实现3D仿Gallery效果的实例代码,效果:滚动翻页+ 页面点击+页码指示器+焦点控制,主要为了移植到电视上做了按键事件和焦点控制。
    2018-05-05
  • Android自定义View实现仿网易音乐唱片播放效果

    Android自定义View实现仿网易音乐唱片播放效果

    这篇文章主要为大家详细介绍了Android自定义View实现仿网易音乐唱片播放效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04
  • 关于Android bitmap你不知道的一些事

    关于Android bitmap你不知道的一些事

    这篇文章主要为大家详细介绍了关于Android bitmap你不知道的一些事,使用bitmap需要注意的一些细节,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • RecyclerView实现列表倒计时

    RecyclerView实现列表倒计时

    这篇文章主要为大家详细介绍了RecyclerView实现列表倒计时,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-09-09
  • Android侧滑效果简单实现代码

    Android侧滑效果简单实现代码

    这篇文章主要为大家详细介绍了Android侧滑效果简单实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • Android studio设置指定的签名文件教程

    Android studio设置指定的签名文件教程

    这篇文章主要介绍了Android studio设置指定的签名文件教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03

最新评论