__android_log_write_log_message -- >get_logger_function() -- >__android_log_logd_logger -- >write_to_log -- >LogdWrite 最終寫到 “/dev/socket/logdw”中,此時logd中的LogListener會監(jiān)測到存在log信息需要寫入,待log保存到" />

日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

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

3天內(nèi)不再提示

Android日志與logd交互過程

麥辣雞腿堡 ? 來源:OPPO內(nèi)核工匠 ? 作者:marc ? 2023-11-23 17:06 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

2.2.3 Android日志與logd交互過程

2.2.3.1 Android日志傳遞給logd

Android app層或framework層,通過調(diào)用Log/Slog/Rlog中d方法打印日志,通過JNI會調(diào)用到native層android_util_Log_println_native接口,具體見下圖內(nèi)容。

圖片

接下來具體調(diào)用流程如下:

/XXX/system/logging/liblog/logger_write.cpp

__android_log_buf_write

-->__android_log_write_log_message

-- >get_logger_function()

    -- >__android_log_logd_logger

       -- >write_to_log

          -- >LogdWrite

最終寫到 “/dev/socket/logdw”中,此時logd中的LogListener會監(jiān)測到存在log信息需要寫入,待log保存到buffer中后,再通知LogReader將新保存的log傳遞給logcat等

socket信息如下

// Note that it is safe to call connect() multiple times on DGRAM Unix domain sockets, so this

// function is used to reconnect to logd without requiring a new socket.

static void LogdConnect(int sock) {

sockaddr_un un = {};

un.sun_family = AF_UNIX;

strcpy(un.sun_path, "/dev/socket/logdw");

TEMP_FAILURE_RETRY(connect(sock, reinterpret_cast(&un), sizeof(sockaddr_un)));

}

2.2.3.2 logd中的log保存過程

具體代碼路徑如/XXX/system/logging/logd/main.cpp,從文件的main函數(shù)中可以看到,logd執(zhí)行過程中創(chuàng)建了LogBuffer,LogReader,LogListener和CommandListener四個對象,上文有詳細介紹,本節(jié)暫且不予解釋,詳情見2.3.1.2節(jié)內(nèi)容。

圖片

接下來創(chuàng)建LogListener的對象,開啟一個線程“l(fā)ogd.writer”監(jiān)聽數(shù)據(jù),具體過程見下圖。

圖片

HandleData()

-->logbuf_->Log

新建一個LogBufferElement對象,實現(xiàn)log的保存.

2.2.3.3 logcat獲取logd日志

/XXX/system/logging/logcat/logcat.cpp

int main(int argc, char** argv) {

Logcat logcat;

return logcat.Run(argc, argv);

}

具體的logcat命令參數(shù)解析在Run函數(shù)中執(zhí)行。

圖片

圖片

android_logger_list_read接下來的調(diào)用過程如下:

android_logger_list_read

-->LogdRead //打開logdr,并通過socket獲取log

-->logdOpen

圖片

logd的main函數(shù)中有開啟LogReader監(jiān)聽

// LogReader listens on /dev/socket/logdr. When a client

// connects, log entries in the LogBuffer are written to the client.

LogReader* reader = new LogReader(log_buffer, &reader_list);

if (reader->startListener()) {

return EXIT_FAILURE;

}

LogReader繼承自SocketListener,如果socket監(jiān)聽到數(shù)據(jù),則執(zhí)行onDataAvailable函數(shù)進行處理。

圖片

圖片

圖片

最后加入read_list_中:

圖片

最終通過ProcessBuffer輸出日志內(nèi)容,打印log_msg日志到界面或者fd文件中。具體內(nèi)容包括:處理日志buffer內(nèi)容、回滾打印日志內(nèi)容等。

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

    關注

    12

    文章

    4035

    瀏覽量

    134550
  • 代碼
    +關注

    關注

    30

    文章

    4977

    瀏覽量

    74417
  • 日志
    +關注

    關注

    0

    文章

    149

    瀏覽量

    11098
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    Android交互視覺設計

    Android交互視覺設計規(guī)范由Android UI組完成,其中涵蓋了Android交互和視覺兩個部分設計規(guī)范。
    發(fā)表于 09-15 10:25 ?0次下載

    對于大規(guī)模系統(tǒng)日志日志模式提煉算法的優(yōu)化

    LARGE框架是部署在中國科學院超級計算環(huán)境中的日志分析系統(tǒng),通過日志收集、集中分析、結果反饋等步驟對環(huán)境中的各種日志文件進行監(jiān)控和分析。在對環(huán)境中系統(tǒng)日志的監(jiān)控
    發(fā)表于 11-21 14:54 ?7次下載
    對于大規(guī)模系統(tǒng)<b class='flag-5'>日志</b>的<b class='flag-5'>日志</b>模式提煉算法的優(yōu)化

    Android系統(tǒng)的日志模式選擇機制

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

    工業(yè)智能網(wǎng)關日志有哪些?如何輸出和導出網(wǎng)關日志查看呢?

    日志主要看網(wǎng)關與平臺交互情況,判斷平臺數(shù)據(jù)是否正常,通道是否正常系統(tǒng)日志主要用于判斷網(wǎng)站和系統(tǒng)的異常如何輸出和導出工業(yè)智能網(wǎng)關的日志呢?1、采集日志
    的頭像 發(fā)表于 10-26 17:33 ?1585次閱讀
    工業(yè)智能網(wǎng)關<b class='flag-5'>日志</b>有哪些?如何輸出和導出網(wǎng)關<b class='flag-5'>日志</b>查看呢?

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

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

    Android校園應用開發(fā)過程

    電子發(fā)燒友網(wǎng)站提供《Android校園應用開發(fā)過程.pdf》資料免費下載
    發(fā)表于 10-19 11:36 ?0次下載
    <b class='flag-5'>Android</b>校園應用開發(fā)<b class='flag-5'>過程</b>

    日志設計開發(fā)過程中的常見問題

    日志是系統(tǒng)中熵增最快的一個模塊,它承載了業(yè)務野蠻生長過程中的所有副產(chǎn)品。本文介紹了一個日志治理案例,圍繞降本和提效兩大主題,取得一定成效,分享給所有渴望造物樂趣的同學。
    的頭像 發(fā)表于 10-19 17:01 ?1330次閱讀
    <b class='flag-5'>日志</b>設計開發(fā)<b class='flag-5'>過程</b>中的常見問題

    Android開發(fā)中的日志接口介紹

    、LOG_ID_RADIO、LOG_ID_EVENTS、LOG_ID_SYSTEM、 LOG_ID_CRASH。 1.1.1 日志緩沖區(qū)簡介 Android日志記錄系統(tǒng)守護進程logd
    的頭像 發(fā)表于 11-23 16:27 ?2193次閱讀
    <b class='flag-5'>Android</b>開發(fā)中的<b class='flag-5'>日志</b>接口介紹

    logd守護進程整體設計架構

    2.1 整體設計架構 2.1.1 logd架構設計圖 架構設計圖內(nèi)容簡介如下: logd啟動過程還存在其他內(nèi)容,比如LogStatistics :是日志統(tǒng)計模塊,默認開啟統(tǒng)計數(shù)據(jù)較少,
    的頭像 發(fā)表于 11-23 16:31 ?1491次閱讀
    <b class='flag-5'>logd</b>守護進程整體設計架構

    logd的啟動過程和內(nèi)容

    logd作為native service,系統(tǒng)啟動過程通過讀取rc文件來啟動,相關的屬性定義在如下logd.rc文件中。 2.2.1 logd啟動
    的頭像 發(fā)表于 11-23 16:54 ?2030次閱讀
    <b class='flag-5'>logd</b>的啟動<b class='flag-5'>過程</b>和內(nèi)容

    kernel日志寫入logd介紹

    kernel日志寫入logd介紹 通過logcat命令獲取kernel日志比較特殊,故作為一個例子進行梳理。 2.3.1 整體流程 2.3.2 命令打印kernel日志 通過logca
    的頭像 發(fā)表于 11-23 17:11 ?1681次閱讀
    kernel<b class='flag-5'>日志</b>寫入<b class='flag-5'>logd</b>介紹

    logcat命令抓取日志方法

    命令抓取日志 logcat -b main -b system -b crash -r 1024 -n 5 -f android.log -v threadtime -b:加載可供查看的緩沖區(qū)的日志
    的頭像 發(fā)表于 11-23 17:31 ?3114次閱讀
    logcat命令抓取<b class='flag-5'>日志</b>方法

    Android開發(fā)中如何解決典型場景缺通用日志的問題

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

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

    ?今天我們學習合宙模組日志總體介紹,以下進入正文。 一、本文討論的邊界 本文是對合宙 4G 模組, 以及 4G+GNSS 模組的日志功能的總體介紹。通過日志,可以對研發(fā)過程中,以及模組
    的頭像 發(fā)表于 10-24 07:16 ?1171次閱讀
    <b class='flag-5'>日志</b>篇:模組<b class='flag-5'>日志</b>總體介紹

    模組日志功能技術概覽

    本文是對 4G 模組, 以及 4G+GNSS 模組的日志功能的總體介紹。 通過日志,可以對研發(fā)過程中,以及模組運行過程中的各種故障進行分析。 二、4G 模組
    的頭像 發(fā)表于 01-14 15:32 ?254次閱讀
    模組<b class='flag-5'>日志</b>功能技術概覽
    洛川县| 南昌市| 鲁甸县| 乳源| 龙里县| 大渡口区| 金川县| 大连市| 商南县| 盐城市| 博客| 沙洋县| 博乐市| 正安县| 祁连县| 伊春市| 澄江县| 道真| 尖扎县| 常德市| 承德市| 朝阳县| 湖南省| 郧西县| 鄂托克旗| 资兴市| 肇源县| 慈溪市| 斗六市| 邹平县| 南乐县| 海阳市| 五华县| 仲巴县| 乌拉特中旗| 张北县| 通城县| 民丰县| 汾西县| 平南县| 西宁市|