當前位置:首頁 » 安卓系統 » android的logcat

android的logcat

發布時間: 2023-09-14 04:09:44

㈠ android logcat抓取app日誌

一.logcat抓log方法:adb logcat命令,可以加條件過濾

1.安裝SDK(參考android sdk環境安裝)

2.使用數據線鏈接手機,在手機助手的sdcard中建立一個1.log的文件或在抓日誌時直接導出到電腦位置

3.程序運行cmd,進入到含有adb.exe目錄

4.輸入adb devices 查看設備是否連上

5.輸入抓取命令:adb logcat -s *:E > /mmt/sdcard/1.log或logcat -s '*:E' >d:/1.log,

6.使用手機打開app操作崩潰一次(如果想中途停止按下ctrl+c)

7.查看日誌抓取文件,分不清楚是那個時間段所造成的後果

8.加入命令:-v time 就會顯示出時間

9.輸入命令adb logcat -v time -s *:E > /mmt/sdcard/1.log(eg:adb logcat -v time -s appname:E>d:/1.log)

10.查看結果

ps:

adb logcat -v time -s appname:E>d:/1.log

-v 顯示日誌格式  -v time 以時間為顯示格式

-s 默認過濾,不顯示默認tag。系統把tag的默認過濾級別是設置為Verbos,tag需要顯示。如果設置-S等同於*:V

appname:E 顯示appname操作中優先順序大於等於「error」的日誌

二、log過濾--根據Log信息級別

• V-(verbose) -明細 (最低優先順序) • D-(debug)-調試• I-(information)-信息• W-(warning)-警告• E-(error)-錯誤

• F — 嚴重錯誤• S — 無記載 (最高優先順序,沒有什麼會被記載)

三、  

log過濾-

  log過濾器使用(  

adb logcat tag:priprity)

過濾器表達式的格式是tag:priority ... ,其中tag是標記(可以是具體的,*表示所有), priority是最小的優先順序,可以是組合

adblogcat ActivityManager:I MyApp:D *:S

adblogcat * :W -----所有優先順序大於等於「warning」的日誌

adblogcat * :E -----所有優先順序大於等於「error」的日誌

四、log輸出-log控制日誌格式 adb logcat -v 格式

brief — 顯示優先順序/標記和原始進程的PID (默認格式)

process — 僅顯示進程PIDtag — 僅顯示優先順序/標記

thread — 僅顯示進程:線程和優先順序/標記

raw — 顯示原始的日誌信息,沒有其他的元數據欄位

time — 顯示日期,調用時間,優先順序/標記,PID

long —顯示所有的元數據欄位並且用空行分隔消息內容

eg:adb logcat -v thread

五.log輸出-附加緩沖區:adb logcat -b 

radio — 查看包含在無線/電話相關的緩沖區消息

events — 查看事件相關的消息

main — 查看主緩沖區 (默認緩沖區)

adb logcat -b  radio

什麼也不加代表默認緩沖

六.log輸出-log選項列表

-b  指定要查看的日誌緩沖區,可以是system,events ,radio,main . 默認值是system和main 。

-c 清楚屏幕上的日誌. 

-d 輸出日誌到屏幕上. 

-f  指定輸出日誌信息的,默認是stdout . 

-g 輸出指定的日誌緩沖區,輸出後退出. 

-n  設置日誌的最大數目.,默認值是4,需要和 -r 選項一起使用。 

-r  每時輸出日誌,默認值為16,需要和-f 選項一起使用. 

-s 設置默認的過濾級別為silent. 

-v  設置日誌輸入格式

㈡ Android 日誌系統分析(三):logcat

logcat 作為讀取日誌的工具,相當於client 的角色;在前兩篇文章中,關於 logcat 如何與其他部分溝通獲取日誌信息的流程已經介紹的比較清晰,本文不在贅述,轉而歸納一下 logcat 的一些常用指令,並對其中一些做詳細分析

Android 日誌系統為日誌消息保留了多個環形緩沖區,但並非多有的日誌消息都會發送到默認的環形緩沖區。這里可以採用 logcat -b 命令查看設備的其他緩沖區:

如果需要查看內核空間日誌信息,可採用如下幾種方式查看:

1、讀取 /proc/kmsg ,命令如下

讀取/proc/kmsg屬於消費型讀取,讀取之後再次讀取不會顯示已經讀取過的日誌信息

2、讀取 /dev/kmsg ,命令如下

讀取/dev/kmsg會顯示緩存區裡面的所有日誌信息。新寫入的日誌信息會不斷累加到日誌緩沖器中

3、使用 dmesg 命令讀取

dmesg命令讀取一次只顯示一部分日誌,非阻塞執行

使用 -v 命令來修改 log 的輸出格式,以顯示特定的元數據欄位:

優先順序:

logcat -f 命令可以將日誌消息輸出到指定的文件中。這里我們需要確定的一件事是 logcat 作為客戶端的角色,會將通過 liblog 獲得的日誌信息進行格式解析、格式化處理,而 liblog 庫本身並不存在保存、解析的功能。這里來對 -f 指令做一下解析:

_logcat() 函數中解析 -f 指令,設置日誌輸出文件。例如 logcat -f sdcard/log.txt ,則 context->outputFileName 賦值為 sdcard/log.txt

printBinary() 函數為例:

logcat.cpp # printBinary() :

[ 1 ] Android物語:logcat
[ 2 ] android調試——logcat詳解
[ 3 ] 玩轉Android10源碼開發定製(12)內核篇之logcat輸出內核日誌

㈢ 在Android開發中,Logcat是什麼

最後介紹一下Android的Log工具LogCat。
首先在Eclipse中選擇Windows > Show View > Other... > Android > LogCat,確定後會出現LogCat顯示框,用戶添加的Log將會在這里顯示。使用時直接在代碼中插入「Log.i("info","this is a log");」,那麼在執行到該語句時,LogCat顯示框中將出現「this is a log」。

在Eclipse中安裝ADT和android sdk包之後,運行以開發的android程序時,在LogCat窗口中會顯示出一系列的信息,這些信息是每一個程序通過Dalvik虛擬機所傳出的實時信息,可以方便我們對程序的了解。
在log窗口中,每條信息都包含五個部分,Time,標題空白,pid,tag和Message。
1、Time
表示執行的時間,這個信息對於學習生命周期,分析程序運行的先後順序特別有用。
2、標題空白的列

表示的是信息的種類,分為V,D,I,W,E五種。
V:verbose,顯示全部信息
D:Debug,顯示調試信息
I:Info,顯示一般信息
W:Warming,顯示警告信息
E:Error,顯示錯誤信息
可以通過點擊LogCat上面的用圓圈括起來的V,D,I,W,E來改變顯示的范圍。比如選擇了W,那就只有警告信息和錯誤信息可以顯示出來了。
3、pid
表示程序運行時的進程號
4、tag
標簽,通常表示系統中的一些進程名,比如我們運行helloworld程序的話,就會看到activitymanager在運行。
5、Message
表示進程運行時的一些具體信息,比如我們運行helloworld程序的話,就會看到starting activity...helloWorld的字樣
可以輸出LogCat的信息到文本文件中,以方便分析。在下拉框中選擇輸出選擇的信息就可以了。
下面是輸出到文件中的啟動helloWorld程序時的一條信息的例子,分別用5個下劃線標出了上面介紹的內容:
05-20 15:46:10.129: INFO/ActivityManager(60): Starting activity: Intent { act=android.intent.action.MAIN cat=
[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.example.android.helloworld/.HelloWorld }
6、Filter的使用
可以在Filter中輸入篩選信息,使LogCat中只現實我們需要分析的信息。比如我們只想看和HelloWorld相關的信息,就可以在
Filter中輸入HelloWorld,這樣只有Message 中包含HelloWorld的內容才會顯示出來。
7、LogCat中信息不能顯示
上面說了這么多關於logCat的使用,可能LogCat中根本就什麼信息都沒有顯示!沒關系,只要在Eclipse中選擇window-
>show view->other->android->devices就可以 了。
8、在LogCat中輸出程序的運行信息

a、在程序中導入相應的包:import android.util.Log;
b、在需要輸出信息的函數中增加相關的調試代碼:Log.i("hi world","oncreate");
方法i是Log類的靜態方法,可以直接使用,我們看著各類的定義可以看到,它提供了多種輸出方法,分別對應我們上面提到的V,D,I,W,E。用哪個方法就決定了輸出的類型,這里用i,表示輸出的是information。
這個方法中的第一個參數就是要顯示在Tag那一欄的內容,把這條語句加到OnCreate方法中,執行時LogCat中就會顯示如下的信息: 05-22 21:58:22.894 I 3910 hi world onCreate
9、創建新的Filter

有時候只想看我們程序中用Log類的相關方法輸出的各種信息,這時就可以考慮新建一個過濾器。點擊LogCat的右上角的「+」號,可以創建一個新的過濾器。比如我們在by Log Tag的選項中填入上面程序輸出的"hi world"這個tag。這樣再運行時在我們新創建的Filter中就只顯示hi world這個tag標記出來的信息了。

Android開發中的logcat工具使用詳解--------

logcat是Android中一個命令行工具,可以用於得到程序的log信息。
logcat使用方法如下所示:
logcat [options] [filterspecs]
logcat的選項包括:
-s 設置過濾器,例如指定 '*:s'
-f <filename> 輸出到文件,默認情況是標准輸出。
-r [<kbytes>] Rotate log every kbytes. (16 if unspecified). Requires -f
-n <count> Sets max number of rotated logs to <count>, default 4
-v <format> 設置log的列印格式, <format> 是下面的一種:
brief process tag thread raw time threadtime long

-c 清除所有log並退出
-d 得到所有log並退出 (不阻塞)
-g 得到環形緩沖區的大小並退出
-b <buffer> 請求不同的環形緩沖區 ('main' (默認), 'radio', 'events')
-B 輸出log到二進制中。

過濾器的格式是一個這樣的串:
<tag>[:priority]

其中 <tag> 表示log的component, tag (或者使用 * 表示所有) , priority 如下所示:

V Verbose
D Debug
I Info
W Warn
E Error
F Fatal
S Silent

事實上logcat的功能 是由Android的類android.util.Log決定的,在程序中log的使用方法如下所示:
Log.v() -------------------- VERBOSE
Log.d() -------------------- DEBUG
Log.i() -------------------- INFO
Log.w() -------------------- WARN
Log.e() -------------------- ERROR
以上log的級別依次升高,DEBUG信息應當只存在於開發中,INFO, WARN,ERROR這三種log將出現在發布版本中。

對於JAVA類,可以聲明一個字元串常量TAG,Logcat可以根據他來區分不同的log,例如在計算器(Calculator)的類中,定義如下所示:

public class Calculator extends Activity {
/* ...... */
private static final String LOG_TAG = "Calculator";
private static final boolean DEBUG = false;
private static final boolean LOG_ENABLED = DEBUG ? Config.LOGD : Config.LOGV;
/* ...... */
由此,所有在Calculator中使用的log,均以"Calculator"為開頭。

例如使用方法如下所示:
# logcat &
< 得到一個log片段 >
W/KeyCharacterMap( 130): No keyboard for id 0
W/KeyCharacterMap( 130): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
I/ActivityManager( 52): Displayed activity com.android.contacts/.: 983 ms
I/ARMAsse mbler( 52): generated scanline__00000077:03545404_00000A04_00000000 [ 29 ipp] (51 ins) at [0x25c978:0x25ca44] in 1764174 ns
I/ARMAssembler( 52): generated scanline__00000077:03515104_00000001_00000000 [ 46 ipp] (65 ins) at [0x25d1c8:0x25d2cc] in 776789 ns
D / dalvikvm ( 130 ): GC freed 834 objects / 81760 bytes in 63ms
D/dalvikvm( 52): GC freed 10588 objects / 425776 bytes in 94ms

其中W/I/D 表示log的級別,「dalvikvm 」「ARMAssembler 」等是不同組件(component)的名稱,後面括弧裡面的數字 表示了發出log的進程號。

使用技巧:
1.使用logcat &在後台運行
2.使用-d得到所有log
3.使用-f或者重定向(>和>>)輸出到文件
4.使用-s設置過濾器,得到想要的log。

當然,最重要的還是在程序中加入恰當的log.

許多初次接觸Android開發的朋友會遇到調試的問題,如何能夠根據錯誤提示迅速的找到「出事地點呢」?在Eclipse+ADT的開發環境中沒有好的直接跟蹤對象內容的方法,通過使用android.util.Log類可以幫助你自己查找錯誤和列印系統日誌消息。它是一個進行日誌輸出的API,我們在Android 程序中可以隨時為某一個對象插入一個Log,然後在DDMS中觀察Logcat的輸出是否正常。
android.util.Log常用的方法有以下5個:Log.v() Log.d() Log.i() Log.w() 以及 Log.e() 。根據首字母對應VERBOSE,DEBUG,INFO, WARN,ERROR。當我們在DDMS進行調試時他們的區別並不大,只是顯示的顏色不同,但通過Logcat的過濾器我們可以過濾顯示某類的,一般對於執行錯誤的斷點,下在Log.e比較合適。但是Android開發網根據規范建議VERBOSE,DEBUG信息應當只存在於開發中,最終版本只可以包含 INFO, WARN,ERROR這三種日誌信息。在實際使用中,我們最好為每一個類聲明一個字元串常量TAG,這樣在Logcat中我們可以容易區分不同的類的日誌。例如:
private static final String TAG = "MyActivity";
接下來我們就可以用Log隨心所欲的觀察Android代碼中的每個細節:Log.e(TAG, "android123.com.cn"); 但是要記住這個Log類的參數都是String類型的。

㈣ Android中如何通過logcat追蹤生命周期事件

Log類是Android.util的成員類,當我們鍵入Log類時,會彈出一個智能代碼提示列表。我們在該列表中選擇日誌輸出類型d的方法時,系統會自動import導入Android.util.Log包。但是要注意Log類值在實際開發中只用於測試代碼,如果你准備進行應用分發時,你應該在代碼中注釋掉或者刪除所有Log類的引用。Log類中封裝了一套方法可以將消息發送到logcat控制台、命令行或者Andorid studio中,這些方法都是由單個字元組成,常用的方法有以下5個:Log.v() ,Log.d() ,Log.i() ,Log.w() ,Log.e() 。根據首字母對應VERBOSE,DEBUG,INFO, WARN,ERROR,分別表示不同的調式級別。在logcat控制台中你可以設置只顯示某個級別及其以上的日誌信息。

按照日誌級別從高到低為ERROR, WARN, INFO, DEBUG, VERBOSE..
1、Log.v 字元串的輸出顏色為黑色的,輸出大於或等於VERBOSE日誌級別的信息
2、Log.d字元串的輸出顏色是藍色的,輸出大於或等於DEBUG日誌級別的信息
3、Log.i字元串的輸出為綠色,輸出大於或等於INFO日誌級別的信息
4、Log.w字元串的輸出為橙色, 輸出大於或等於WARN日誌級別的信息
5、Log.e字元串的的輸出為紅色,僅輸出ERROR日誌級別的信息.

那我們如何通過Log類監聽Activity的生命周期呢看
首先我們在Activity中重寫所有生命周期相關的回調方法,然後在每個回調方法中通過Log類來調用相應的方法來列印信息。根據列印的信息我們就可以知道Activity的生命周期順序時怎麼樣的了,以下示例代碼我們監聽了Activity所有生命周期相關的回調方法。在我們運行程序時就可以在控制台看到生命周期順序的列印信息了。
package com.example.hsport.catalog;

import android.os.Bundle;
import android.support.design.widget.CoordinatorLayout;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

private CoordinatorLayout coordinatorLayout;
private final String TAG ="--MainActivity--";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
coordinatorLayout = (CoordinatorLayout) findViewById(R.id.coordinator);
Button button = (Button) findViewById(R.id.submitbutton);
Log.d(TAG,"--onCreate--");
}

@Override
protected void onStop() {
super.onStop();
Log.d(TAG,"--onStop--");
}

@Override
protected void onDestroy() {
super.onDestroy();
Log.d(TAG,"--onDestroy--");
}

@Override
protected void onPause() {
super.onPause();
Log.d(TAG,"-- onPause--");
}

@Override
protected void onResume() {
super.onResume();
Log.d(TAG,"-- onPause--");
}

@Override
protected void onStart() {
super.onStart();
Log.d(TAG,"-- onPause--");
}

@Override
protected void onRestart() {
super.onRestart();
Log.d(TAG,"-- onRestar--");
}
}
當我們在模擬器中啟動Activity時列印信息如下,可以看出來它調用了onCreate、onStart、onResume三個方法

你可以通過操作應用程序來查看更多情況下的Activity生命周期的變化。
這些都是Android中的基礎知識,推薦你可以在一個叫做秒秒學的教程網站上可以找到相關資料。

㈤ 如何獲取 android 的系統日誌 logcat

在windows7操作系統下,開發平台為android studio可以按照如下步驟獲取android 的系統日誌 logcat。

1、首先打開android studio的頁面,如下圖:

㈥ Android logcat使用總結

輸出指定的ring buffer(s). 可選項如下:

多選使用『,』作為分隔符:
-b main,system,radio,events,crash,kernel

-d Dump the log and then exit (don't block).
mp出logcat後即退出,不阻塞。

--pid=<pid> Only print logs from the given pid.
指定輸出pid列印的logcat。
例如(只輸出system_server的列印):
logcat --pid= pidof system_server

-v指定輸出格式,可選的格式如下:
brief — Display priority/tag and PID of the process issuing the message.
例如:
D/WindowManager( 845): Receive Input KeyEvent of Powerkey up
process — Display PID only.
例如:
W( 356) Warning: Dispc cannot support 5 layer blending(0) (DPUMole

raw — Display the raw log message, with no other metadata fields.
例如:
Checking safeboot...

tag — Display the priority/tag only.
例如:
I/chatty : uid=1000(system) PowerController expire 22 lines

thread — Display priority, PID and TID of process issuing the message.
例如:
I( 845: 885) uid=1000(system) ActivityManager expire 8 lines

threadtime — Display the date, invocation time, priority, tag, and the PID
and TID of the thread issuing the message. (the default format).

例如:
04-15 10:34:11.352 587 1282 I chatty : uid=1000(system) watchdog expire 10 lines

time — Display the date, invocation time, priority/tag, and PID of the
process issuing the message.

例如:
04-15 12:43:42.509 V/FingerprintService( 845): mDaemon was null, reconnect to fingerprint

long — Display all metadata fields, separate messages with blank lines.
例如:

-v threadtime 是默認值:

另外,還可以額外添加修飾符:

例如(color,會以不同的顏色分別高亮不同優先順序的列印):
logcat -v tag,color

將logcat保存到本地。

如果長時間抓取logcat,一般推薦 -f -r -n 一起使用。
例如(保存到data/logcat.txt,每個文件最大2M,最多保存20個文件):
logcat -f data/logcat.txt -r 2048 -n 20

設置過濾器。

-s Set default filter to silent. Equivalent to filterspec '*:S'
slient,最高優先順序顯示。

使用正則表達式。
例如:
logcat -e ^check.+$

例如:

-g/-G 用於查看/修改ring buffer的大小。

熱點內容
創建資料庫過程 發布:2025-01-31 20:06:31 瀏覽:429
諾安成長與鑫靈活配置哪個好 發布:2025-01-31 19:58:54 瀏覽:604
b樹磁碟存儲 發布:2025-01-31 19:42:53 瀏覽:837
聯想小新air15怎麼配置環境 發布:2025-01-31 19:06:57 瀏覽:968
什麼配置玩3a 發布:2025-01-31 19:05:22 瀏覽:586
phpoa系統 發布:2025-01-31 18:58:42 瀏覽:10
值e的編程 發布:2025-01-31 18:57:06 瀏覽:977
安卓手機的軟體認證在哪裡 發布:2025-01-31 18:57:01 瀏覽:535
android彈出來 發布:2025-01-31 18:56:56 瀏覽:232
辦公室白領新解壓方法 發布:2025-01-31 18:55:23 瀏覽:558