1. 程式人生 > >android log列印顯示不全的原因

android log列印顯示不全的原因

一個優秀的軟體系統一定會實時儲存系統執行過程中產生的異常或非異常性資料,用於記錄系統執行過程產生的各種行為,作為日後發現問題、跟蹤問題並解決問題的一個很重要的依據。一般以輸出檔案的形式儲存,同時也可以選擇性的在控臺列印。日誌處理,可謂是任何軟體開發過程中必不可少的一個環節。

Android應用開發階段,我們常常會使用系統提供的日誌列印功能選擇性地在Logcat控制檯上列印一些資料資訊,便於更加直觀地除錯跟蹤應用執行的一個狀態,常見如客戶端與伺服器通訊過程中涉及到的URL連結、request請求引數和response響應結果等。

但如果列印的message過長,比如介面響應結果過大,將會導致Logcat控臺數據顯示不全。自打使用Log以來經常遇到這個問題,之前也是沒太在意,畢竟message太長的情況也是少見,偶爾遇到這種情況就通過Debug工具跟蹤除錯,複製對應response資訊到bejson等其他輔助工具上格式化瀏覽,多少還是有點不方便。

後來經過查詢才得知,Android系統的單條日誌列印長度是有限的,在底層Logger驅動程式的一個類Logger.h標頭檔案中有如下兩行程式碼:

#define LOGGER_ENTRY_MAX_LEN        (4*1024)  
#define LOGGER_ENTRY_MAX_PAYLOAD    \\  
    (LOGGER_ENTRY_MAX_LEN - sizeof(struct logger_entry))  
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

可以看出,系統顯示單條Log資訊的長度是固定的,為4*1024個字元長度!Logcat使用的liblog資源包也提到,使用Log列印的message有可能被log核心驅動縮短:

The message may have been truncated by the kernel log driver.
  • 1
  • 1

瞭解了其中的長度限制,就好辦了。我們可以對Message做個長度判斷,採取分段列印的辦法輸出日誌資訊,比如這樣做:

if(xml.length() > 4000) {
 for(int i=0;i<xml.length();i+=4000){
    if(i+4000<xml.length())
        Log.i("rescounter"+i,xml.substring(i, i+4000));
     else
        Log.i("rescounter"
+i,xml.substring(i, xml.length())); } } else Log.i("resinfo",xml); }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

參考地址:

相關推薦

android log列印顯示原因

一個優秀的軟體系統一定會實時儲存系統執行過程中產生的異常或非異常性資料,用於記錄系統執行過程產生的各種行為,作為日後發現問題、跟蹤問題並解決問題的一個很重要的依據。一般以輸出檔案的形式儲存,同時也可以選擇性的在控臺列印。日誌處理,可謂是任何軟體開發過程中必不可少的一個環節

android全面屏顯示解決方案【更新中...】

一、宣告最大螢幕縱橫比(官方適配方案) Android官方提供了適配方案,即提高App所支援的最大螢幕縱橫比,實現很簡單,在AndroidManifest.xml中可做如下配置: <meta-data android:name="android.max_aspect"

android 中WebView 顯示的問題

在開發過程中我的WebView只要加上 RunJavaScript jsi = new RunJavaScript(); // RunJavaScript為自己定義的內類,負責讓js呼叫。 detailsWebview.addJavascriptInterface(jsi,

android中WebView 顯示的問題

android中WebView 顯示不全的問題 在開發過程中我的WebView只要加上RunJavaScript jsi = new RunJavaScript(); // RunJavaScript為自己定義的內類,負責讓js呼叫。 detailsWebview.ad

Android Studio 介面顯示問題

        最近想試試google的android studio開發工具。安裝完成後,按照嚮導新建一個工程,發現嚮導介面太大,整個螢幕顯示不過來,調整介面大小也無法搞定。我用的是ubuntu系統,筆記本解析度為1366*768。         上網百度了好多,發現不少

[修正] Firemonkey Android 文字斜粗體顯示的問題

tty height log bounds com tab div nag 技術 問題:Firemonkey Android 平臺顯示斜粗體文字時,文字右方會有顯示不全的問題。 修正代碼: 請將 FMX.FontGlyphs.Android.pas 復制到自己的工程目錄

android TV開發使用listview和gridview最後一行顯示的問題

在android TV上,有時候,我們會發現,在使用ListView和GridView的時候,如果直接給ListView或者GridView的layout_height屬性設定為match_parent的時候,當我們執行, 填充資料的時候,我們下拉到最後一行,發現最後一行資料縱向上內

android webview底部頁面,圖片顯示

android在呼叫webview載入html時,可能會出現頁面顯示不全,圖片載入不了的情況。 百度了查看了方法,只有下面這個方法解決了我的問題 // 解決圖片不顯示 // android 5.0以上預設不支援Mixed Content if (Build.V

android listview巢狀時,顯示能滑動的解決

在listview巢狀listview的過程中,如果我們不寫一點特殊的操作的話,可能子listview會顯示不全,並且無法滑動,那麼應該怎麼解決呢 1.子listview繼承listview,然後重寫onmeasure方法,在裡面手動的去計算高度,然後傳給super方法,這

Eclipse Maven構建WebApp專案資源目錄顯示原因與解決方式

一、問題展示        1、Eclipse在使用Maven構建WebApp專案的時候,首先Maven的安裝和配置都沒有問題的,但是構建專案之後,Maven專案要求的幾個必須要有的資源目錄顯示不了:

android listView多層巢狀listView顯示問題

最近在做專案,需要用到listVIew多層巢狀listVIew的需求,先發現已下兩個處理辦法比較好用 第一種:public class ListViewNesting extends ListView { public ListViewNesting(Context c

Android WebView顯示的問題。圖片顯示的問題。

最近寫一個專案,用WebView載入網頁的時候有時能顯示全,有時能,有事還得滑動一下才能顯示出來,奇怪,程式碼都是從一個正常的專案中拷貝過來的,怎麼會出問題呢,而且百度谷歌半天都沒解決,經過半天的排查,原因如下: <?xml version="1.0" encodin

Android 自定義彈出對話方塊顯示的問題

昨天需要用自定義AlertDialog來實現一項功能,步驟大體是: 1.自定義佈局檔案 2.初始化AlertDialog,並設定setView 3.按鈕 文字框啥的處理 為了偷懶直接copy工程裡面同事完成的對話方塊。但是我修改後效果卻不一樣,先看我的佈局檔案圖示: 這

android viewpager巢狀recyclerview寬度顯示問題

問題:viewpager嵌套了recyclerview,前面幾個item寬度顯示有問題(往下滑之後又往上就正常了),起初以為是inflate問題,後來發現是因為使用了ConstraintLayout的問題,刪除了直接使用RecyclerView就沒問題了

Android webView 軟鍵盤覆蓋輸入框,webView頁面底部顯示

1.軟鍵盤覆蓋輸入框 【解決】 1.1AndroidManifest.xml <activity android:name=".activity.FindDetailsActivity" android:windowSo

Android 自定義RatingBar控制元件,顯示問題

最近專案要用到 自定義RatingBar控制元件 但是自定義好了樣式發現,星星只顯示一半,於是在網上找各種解決方法。 最後竟然是直接把資源圖片,移動到較高解析度的資料夾裡面。 我的解決做法如下,如果有更好的方法,請留言告知。 一,先寫一個drawable,設定好backg

【最強解決辦法】列印圖片顯示

最近寫論文,由於學會要求PDF稿內的圖片大於300dpi,於是在word那兒折騰了半天。 有人推薦用LaTeX類軟體來寫作,那樣匯出畫質啊格式啊啥的都可調,而且完美……但是抱歉我只有3天時間了,來不及學這麼個用程式設計思維來寫文章的軟體。於是下列問題如何解決呢? 1. Word2013預覽裡的圖片

Android學習 之 問題&解答 ScrollView中巢狀ListView時顯示的簡便解決方案

利用下面這個Utility 類的靜態方法setListViewHeightBasedOnChildren()即可實現: 在listview.setAdapter()之後呼叫Utility.setListViewHeightBasedOnChilren(listview)就

筆記——Android自定義seekbar中,滑塊顯示解決辦法

自定義seekBar的時候發現,圓形滑塊總有一部分被覆蓋,設定什麼padding之類的病不起作用,查詢資料發現 android:thumbOffset="0dp" 在佈局檔案中加上thumbOffset屬性可以解決,thumbOffset屬性表示滑塊距離左側的間距。 下面

Android—解決之ScrollView巢狀GridView顯示的問題

重寫GridView裡面的方法,在xml裡面使用該gridview package com.example.wheelview; import android.content.Context; import android.util.AttributeSet; impor