国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

Android系統(tǒng)開發(fā)中l(wèi)og的使用方法

2020-02-21 17:30:59
字體:
供稿:網(wǎng)友

在程序開發(fā)過程中,日志是一種廣泛的使用記錄,可用于產(chǎn)品運(yùn)行中的程序調(diào)試和事件記錄,在Android系統(tǒng)中,提供了一種簡單方便的機(jī)制,開發(fā)人員可以很容易地使用,一起進(jìn)入下文看看吧!

1、linux內(nèi)核的log輸出
在標(biāo)準(zhǔn)的linux內(nèi)核開發(fā)過程中,使用printk,這是一個與printf輸出打印齊名的函數(shù),同樣提供格式化輸出功能,只是其有
打印級別且將信息保存到/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中l(wèi)og輸出
Android系統(tǒng)在用戶空間中提供了輕量級的logger日志系統(tǒng),它是在內(nèi)核中實(shí)現(xiàn)的一種設(shè)備驅(qū)動,與用戶空間的logcat工具配合使用能夠方便地跟蹤調(diào)試程序。
Android系統(tǒng)中的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定義了相對應(yīng)的宏:
#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__))
因?yàn)槿绻枰褂胠og輸出,包含其頭文件:#include<cutils/log.h>并link其動態(tài)庫:liblog.so即可
#defineLOG_TAG"XX_LOG_TAG"http://這里可以定義其輸出的TAG
#include<cutils/log.h>
JAVA層打印:
importandroid.util.Log;
privatestaticfinalStringTAG="XX_LOG_TAG";
Log.e(TAG,"ThisistheerrorlogprintedbyLog.iinandroiduserspace.");

3、盒子上如何獲取log
a、進(jìn)入shell獲取log
adbkill-server
adbconnectdest-ip
adbshell【登錄shell】
mount-oremount/system/system【改變權(quán)限】
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環(huán)境下運(yùn)行(安裝了Android插件),那么直接可以在Eclipse就可以查看了
?

5、常用技巧
1、logcat中會打印【輸出級別+LOG_TAG名字+進(jìn)程字+打印的信息】可以充分利用這些信息分析問題
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這種命名
第三列是系統(tǒng)進(jìn)程號getpid()這值,打印線程值pthread_slef()

最后的就是自行增加的打印信息
2、調(diào)效效率或者執(zhí)行時間
1、建議重點(diǎn)的打印增加前綴,方便查找。以[######]
2、直接利用logcat輸出時間,調(diào)試執(zhí)行速度,分析效率
logcat-vtime【Displaythedate,invocationtime,priority/tag,andPIDoftheoriginatingprocess.

Android系統(tǒng)開發(fā)中l(wèi)og的使用方法為各位朋友們介紹到這里了,大家看完上面的內(nèi)容之后,是不是知道了吧,希望大家可以繼續(xù)支持武林技術(shù)頻道!

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 民勤县| 南城县| 和政县| 陇西县| 汉中市| 赤水市| 襄汾县| 广灵县| 勃利县| 新巴尔虎左旗| 六安市| 平和县| 阿拉善左旗| 苏州市| 汝阳县| 安岳县| 临夏县| 勐海县| 合作市| 宜川县| 安乡县| 铁岭市| 手游| 永兴县| 牡丹江市| 阿荣旗| 钟祥市| 宝山区| 临邑县| 同德县| 林甸县| 泉州市| 兴化市| 鄂托克前旗| 麦盖提县| 华池县| 巴马| 克什克腾旗| 天水市| 南昌县| 碌曲县|