1、日志接口
日志接口內(nèi)容,共分為java層、native層、kernel層等。下面就對每個(gè)層級的內(nèi)容分別進(jìn)行介紹。
1.1 java層調(diào)用接口
日志級別分別為VERBOSE、DEBUG、INFO、WARN、ERROR、ASSERT,日志級別依次提升。默認(rèn)定義了5個(gè)buffer緩沖區(qū),分別是main、radio、events、system、crash,對應(yīng)的ID信息分別為LOG_ID_MAIN、LOG_ID_RADIO、LOG_ID_EVENTS、LOG_ID_SYSTEM、 LOG_ID_CRASH。
1.1.1 日志緩沖區(qū)簡介
Android日志記錄系統(tǒng)守護(hù)進(jìn)程logd維護(hù)的一組結(jié)構(gòu)化環(huán)形緩沖區(qū),這組可用的緩沖區(qū)是固定的,且由系統(tǒng)定義。也可以通過logcat 命令查看如下緩沖區(qū)。
radio: 查看包含無線裝置/電話相關(guān)消息的緩沖區(qū),可以調(diào)用android.telephony.Rlog打印日志。
events: 查看經(jīng)過解譯的二進(jìn)制系統(tǒng)時(shí)間緩沖區(qū)信息,類型為events的日志是用來診斷系統(tǒng)問題的。在應(yīng)用框架提供了android.util.EventLog接口通過liblog動(dòng)態(tài)庫往日志驅(qū)動(dòng)程序中寫入日志,運(yùn)行時(shí)庫提供了宏LOG_EVENT_INT、LOG_EVENT_LONG、LOG_EVENT_FLOAT、LOG_EVENT_STRING用來寫入events類型日志。
main: 查看主日志緩沖區(qū)信息,main日志緩沖區(qū)是應(yīng)用程序唯一可用的日志緩沖區(qū),在應(yīng)用框架中提供了android.util.Log接口通過liblog動(dòng)態(tài)庫往日志驅(qū)動(dòng)程序中寫入日志,運(yùn)行時(shí)庫提供了LOGV、LOGD、LOGI、LOGW、LOGE等宏用來寫入main類型的日志。
system: 查看系統(tǒng)緩沖區(qū)類型為system的日志,在應(yīng)用框架提供了android.util.SLog接口通過liblog動(dòng)態(tài)庫往日志驅(qū)動(dòng)程序中寫入日志,運(yùn)行時(shí)庫提供了SLOGV、SLOGD、SLOGI、SLOGW、SLOGE等宏用來寫入system類型的日志。
crash: 查看崩潰日志緩沖區(qū)的日志信息。
1.1.2 命令查看緩沖區(qū)日志信息
ogcat -b + 參數(shù)查看對應(yīng)緩沖區(qū)內(nèi)容,具體見如下內(nèi)容。
all :查看所有緩沖區(qū)日志
default :查看main、system、crash三個(gè)緩沖區(qū)日志信息
比如:logcat -b main用來查看main緩沖區(qū)信息;logcat -b main,system用來查看main和system緩沖區(qū)信息;logcat -b all 查看所有緩沖區(qū)信息。
1.2 native層接口調(diào)用
原生系統(tǒng)日志接口封裝在liblog.so庫中,供native層代碼調(diào)用。最終通過socket的通信方式將日志寫入logd的buffer中。具體調(diào)用過程需要引入liblog動(dòng)態(tài)庫,然后才能調(diào)用如下native層的日志接口__android_log_print,很多內(nèi)容都封裝成ALOGX的接口,具體內(nèi)容可參考如下所示:
#define ALOGV(...) __android_log_print(ANDROID_LOG_VERBOSE, LOG_TAG, VA_ARGS )
#define ALOGD(...) __android_log_print(ANDROID_LOG_DEBUG , LOG_TAG, VA_ARGS )
#define ALOGI(...) __android_log_print(ANDROID_LOG_INFO , LOG_TAG, VA_ARGS )
#define ALOGW(...) __android_log_print(ANDROID_LOG_WARN , LOG_TAG, VA_ARGS )
#define ALOGE(...) __android_log_print(ANDROID_LOG_ERROR , LOG_TAG, VA_ARGS )
1.3 kernel層調(diào)用接口
經(jīng)常使用的接口是printk,具體用法如下:
printk(KERN_INFO "n"); //KERN_INFO為日志級別,"n"則為日志信息。
日志級別信息如下:
kernel日志級別分別是:KERN_EMERG,KERN_ALERT,KERN_CRIT,KERN_ERR,KERN_WARNING,KERN_NOTICE,KERN_INFO,KERN_DEBUG
原生代碼kern_levels.h中定義如下
#define KERN_EMERGKERN_SOH "0"/* system is unusable */
#define KERN_ALERTKERN_SOH "1"/* action must be taken immediately */
#define KERN_CRITKERN_SOH "2"/* critical conditions */
#define KERN_ERRKERN_SOH "3"/* error conditions */
#define KERN_WARNINGKERN_SOH "4"/* warning conditions */
#define KERN_NOTICEKERN_SOH "5"/* normal but significant condition */
#define KERN_INFOKERN_SOH "6"/* informational */
#define KERN_DEBUGKERN_SOH "7"/* debug-level messages */
日志輸出到/proc/kmsg節(jié)點(diǎn),用戶可以通過cat節(jié)點(diǎn)信息獲取kernel日志信息。
-
Android
+關(guān)注
關(guān)注
12文章
3945瀏覽量
127980 -
接口
+關(guān)注
關(guān)注
33文章
8706瀏覽量
151971 -
JAVA
+關(guān)注
關(guān)注
19文章
2975瀏覽量
105182
發(fā)布評論請先 登錄
相關(guān)推薦
Android系統(tǒng)與應(yīng)用開發(fā)內(nèi)容介紹
Android系統(tǒng)開發(fā)之藍(lán)牙開發(fā)案例分析
Android Studio應(yīng)用開發(fā)簡介
Android系統(tǒng)的日志模式選擇機(jī)制
![<b class='flag-5'>Android</b>系統(tǒng)的<b class='flag-5'>日志</b>模式選擇機(jī)制](https://file.elecfans.com/web2/M00/49/88/poYBAGKhwMOARqTNAAAcJuvP-3M148.jpg)
Android Parcelable接口使用
fireflyCORE-3399PRO主板JD4--Android開發(fā)
Android的開發(fā)模式詳細(xì)介紹
![<b class='flag-5'>Android</b>的<b class='flag-5'>開發(fā)</b>模式詳細(xì)<b class='flag-5'>介紹</b>](https://file.elecfans.com/web1/M00/B5/22/pIYBAF5dq7qAcx6gAACTijwRNco332.png)
基于Rust的Log日志庫介紹
日志設(shè)計(jì)開發(fā)過程中的常見問題
![<b class='flag-5'>日志</b>設(shè)計(jì)<b class='flag-5'>開發(fā)過程中</b>的常見問題](https://file1.elecfans.com/web2/M00/A9/58/wKgaomUw8XmAPdPEAAAo5SQb3YU336.png)
Android開發(fā)中如何解決典型場景缺通用日志的問題
![<b class='flag-5'>Android</b><b class='flag-5'>開發(fā)</b><b class='flag-5'>中</b>如何解決典型場景缺通用<b class='flag-5'>日志</b>的問題](https://file1.elecfans.com/web2/M00/B2/67/wKgZomVfHA2ATQgJAAHfZyjxAJY029.jpg)
日志篇:模組日志總體介紹
![<b class='flag-5'>日志</b>篇:模組<b class='flag-5'>日志</b>總體<b class='flag-5'>介紹</b>](https://file1.elecfans.com/web2/M00/0A/11/wKgZomcZg22AOW6TAAABQt1t03I437.png)
評論