那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Android開發中的日志接口介紹

麥辣雞腿堡 ? 來源:OPPO內核工匠 ? 作者:marc ? 2023-11-23 16:27 ? 次閱讀

1、日志接口

日志接口內容,共分為java層、native層、kernel層等。下面就對每個層級的內容分別進行介紹。

1.1 java層調用接口

圖片

日志級別分別為VERBOSE、DEBUG、INFO、WARN、ERROR、ASSERT,日志級別依次提升。默認定義了5個buffer緩沖區,分別是main、radio、events、system、crash,對應的ID信息分別為LOG_ID_MAIN、LOG_ID_RADIO、LOG_ID_EVENTS、LOG_ID_SYSTEM、 LOG_ID_CRASH。

圖片

1.1.1 日志緩沖區簡介

Android日志記錄系統守護進程logd維護的一組結構化環形緩沖區,這組可用的緩沖區是固定的,且由系統定義。也可以通過logcat 命令查看如下緩沖區。

radio: 查看包含無線裝置/電話相關消息的緩沖區,可以調用android.telephony.Rlog打印日志。

events: 查看經過解譯的二進制系統時間緩沖區信息,類型為events的日志是用來診斷系統問題的。在應用框架提供了android.util.EventLog接口通過liblog動態庫往日志驅動程序中寫入日志,運行時庫提供了宏LOG_EVENT_INT、LOG_EVENT_LONG、LOG_EVENT_FLOAT、LOG_EVENT_STRING用來寫入events類型日志。

main: 查看主日志緩沖區信息,main日志緩沖區是應用程序唯一可用的日志緩沖區,在應用框架中提供了android.util.Log接口通過liblog動態庫往日志驅動程序中寫入日志,運行時庫提供了LOGV、LOGD、LOGI、LOGW、LOGE等宏用來寫入main類型的日志。

system: 查看系統緩沖區類型為system的日志,在應用框架提供了android.util.SLog接口通過liblog動態庫往日志驅動程序中寫入日志,運行時庫提供了SLOGV、SLOGD、SLOGI、SLOGW、SLOGE等宏用來寫入system類型的日志。

crash: 查看崩潰日志緩沖區的日志信息。

1.1.2 命令查看緩沖區日志信息

ogcat -b + 參數查看對應緩沖區內容,具體見如下內容。

all :查看所有緩沖區日志

default :查看main、system、crash三個緩沖區日志信息

比如:logcat -b main用來查看main緩沖區信息;logcat -b main,system用來查看main和system緩沖區信息;logcat -b all 查看所有緩沖區信息。

1.2 native層接口調用

原生系統日志接口封裝在liblog.so庫中,供native層代碼調用。最終通過socket的通信方式將日志寫入logd的buffer中。具體調用過程需要引入liblog動態庫,然后才能調用如下native層的日志接口__android_log_print,很多內容都封裝成ALOGX的接口,具體內容可參考如下所示:

#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層調用接口

經常使用的接口是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節點,用戶可以通過cat節點信息獲取kernel日志信息。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Android
    +關注

    關注

    12

    文章

    3945

    瀏覽量

    127944
  • 接口
    +關注

    關注

    33

    文章

    8694

    瀏覽量

    151925
  • JAVA
    +關注

    關注

    19

    文章

    2975

    瀏覽量

    105152
收藏 人收藏

    評論

    相關推薦

    Android系統與應用開發內容介紹

    是對ITelephony接口和ISms接口以及AIDL在Android程序開發應 用。e.使用BroadcastReceiver實現開機
    發表于 07-13 14:03

    Android系統開發之藍牙開發案例分析

    主題:Android系統開發之藍牙設備訪問技術要點分析及經典案例課程內容:本專題圍繞Android藍牙技術及設備訪問要點進行介紹,為您解決
    發表于 07-24 16:32

    Android Studio應用開發簡介

    詳細的開發過程請參考用戶手冊《Android Studio應用開發簡介》。在此手冊,詳細介紹Andr
    發表于 10-20 11:27

    android框架與應用開發介紹

    android框架與應用開發介紹
    發表于 10-24 09:35 ?7次下載
    <b class='flag-5'>android</b>框架與應用<b class='flag-5'>開發</b><b class='flag-5'>介紹</b>

    Android系統的日志模式選擇機制

    在寫磁盤的過程如果意外掉電或系統崩潰很有可能導致文件系統中用戶數據和元數據不一致,現有文件系統主要采取寫前日志或寫時拷貝等一致性技術來解決該問題,但均沒有考慮目錄對可靠性需求的差異性。針對現有
    發表于 01-03 14:46 ?0次下載
    <b class='flag-5'>Android</b>系統的<b class='flag-5'>日志</b>模式選擇機制

    AndroidLog相關介紹

    本文檔內容介紹了基于AndroidLog相關介紹及源代碼,供參考
    發表于 03-15 11:03 ?4次下載

    Android Parcelable接口使用

    Android開發,我們會遇到各種各樣情況,比如如何將對象保存在本地磁盤或網絡上傳輸等。其實,實現序列化的方式有兩種方式,分別是實現Serializable接口和實現Parcela
    發表于 04-03 10:36 ?2次下載

    fireflyCORE-3399PRO主板JD4--Android開發

    Android開發 ADB 使用 前言 adb,全稱 Android Debug Bridge,是 Android 的命令行調試工具,可以完成多種功能,如跟蹤系統
    的頭像 發表于 12-17 16:30 ?1739次閱讀

    Android開發模式詳細介紹

    。在本章,您將了解Android Studio、如何獲取Android開發中使用的獨立SDK工具、各種Android模擬器和版本控制系統。
    發表于 03-03 08:00 ?0次下載
    <b class='flag-5'>Android</b>的<b class='flag-5'>開發</b>模式詳細<b class='flag-5'>介紹</b>

    Android異常日志快速定位分析小技巧

    Android異常日志快速定位分析小技巧
    的頭像 發表于 08-09 10:06 ?2971次閱讀
    <b class='flag-5'>Android</b>異常<b class='flag-5'>日志</b>快速定位分析小技巧

    基于Rust的Log日志介紹

    Rust是一門系統級編程語言,因其安全性、高性能和并發性而備受歡迎。在Rust應用程序日志記錄是一項非常重要的任務,因為它可以幫助開發人員了解應用程序的運行情況并解決問題。Rust的Log庫提供
    的頭像 發表于 09-19 14:49 ?3572次閱讀

    日志設計開發過程中的常見問題

    日志是系統熵增最快的一個模塊,它承載了業務野蠻生長過程的所有副產品。本文介紹了一個日志治理案例,圍繞降本和提效兩大主題,取得一定成效,分
    的頭像 發表于 10-19 17:01 ?610次閱讀
    <b class='flag-5'>日志</b>設計<b class='flag-5'>開發過程中</b>的常見問題

    Android日志與logd交互過程

    2.2.3 Android日志與logd交互過程 2.2.3.1 Android日志傳遞給logd Android app層或framewo
    的頭像 發表于 11-23 17:06 ?1011次閱讀
    <b class='flag-5'>Android</b><b class='flag-5'>日志</b>與logd交互過程

    Android開發如何解決典型場景缺通用日志的問題

    下面針對一些典型場景缺通用日志android/kernel)的問題,一一列舉如下,希望可以讓大家關注到缺日志的真實原因。如下問題也提醒各位工程師:謹慎添加日志,不要隨意添加,否則即容
    的頭像 發表于 11-23 17:39 ?1015次閱讀
    <b class='flag-5'>Android</b><b class='flag-5'>開發</b><b class='flag-5'>中</b>如何解決典型場景缺通用<b class='flag-5'>日志</b>的問題

    日志篇:模組日志總體介紹

    ?今天我們學習合宙模組日志總體介紹,以下進入正文。 一、本文討論的邊界 本文是對合宙 4G 模組, 以及 4G+GNSS 模組的日志功能的總體介紹。通過
    的頭像 發表于 10-24 07:16 ?249次閱讀
    <b class='flag-5'>日志</b>篇:模組<b class='flag-5'>日志</b>總體<b class='flag-5'>介紹</b>
    百家乐官网娱乐人物| 淘金百家乐官网的玩法技巧和规则| 百家乐官网筹码14克| 百家乐专用台布| 太阳城7778886| 青神县| 罗马百家乐官网的玩法技巧和规则 | 百家乐一代龙虎机| 大发888八大胜博彩| 澳门百家乐官网有赢钱的吗| 网上百家乐大赢家筹码| 博彩e族| 678百家乐官网博彩娱乐网| 百家乐平注赢钱法| 金昌市| 百家乐赢新全讯网| 新利国际| 玩百家乐官网的好处| 大发888 王博| 五张百家乐官网的玩法技巧和规则| 百家乐园百乐彩| 百家乐官网百家乐官网论坛| 百家乐群html| 电子百家乐| 真人百家乐皇冠网| 平博| 百家乐桌子10人| 左贡县| 澳门百家乐是怎样赌| 尼木县| 在线玩百家乐的玩法技巧和规则| 澳门百家乐官网娱乐城打不开| 百家乐也能赢钱么| 天博国际| 视频百家乐赢钱| 百家乐官网最新套路| 百家乐真人荷官网| 网上百家乐官网有人赢过嘛| 百家乐线路图分析| 至尊百家乐官网娱乐| 棋牌娱乐城注册送58|