導航:首頁 > 凈水問答 > eclipse過濾打日誌

eclipse過濾打日誌

發布時間:2023-11-13 20:53:09

⑴ catlog日誌工具怎麼使用

首先討論一下為什麼使用Logcat而不使用Java中的System.out.println()方法來輸出日誌。
System.out.println()方法的優點就是使用很方便,只需要在Eclipse中輸入syso,接著按下代碼提示,這個方法就自動出來了。但是相比較Logcat,它的缺點也很明顯,比如列印時間無法確定、列印內容無法控制、不能添加過濾器、日誌級別沒有區分等等。

今天重點討論下log的級別區分,Android中的日誌工具類Logcat(android.util.Log)提供了5種方法(對應5種級別),當然如有需要也可以進行重載,這里暫時不談。先看這五種方法:
1.Log.v()
對應級別verbos,屬於Android日誌裡面級別最低的一種。從名字可以看出,這中方法用於列印哪些瑣碎的的、意義最小的日誌信息(顯然數量較多)。
2.Log.d()
對應級別debug,比verbose高一級。這種方法用於列印調試的相關信息,對調試程序和分析問題用很大幫助。
3.Log.i()
對應級別info,又比debug高一級。該方法用於列印一些比較重要的信息,這些信息有助於幫助分析用戶行為。
4.Log.w()
對應級別warn,比info高一級。這個方法用於列印一些警告信息,提示程序在某些部分可能存在潛在的風險,例如程序流會堵死之類。最好將這些部分修復一下。
5.Log.e()
對應級別error,是級別最高的日誌信息。這個方法用於列印程序中的錯誤信息,例如程序進入了catch語句當中(異常處理機制)。當出現E級別的日誌信息的時候表示程序出現了很嚴重的錯誤,需要盡快修復。

細想一下,Log和Logcat配合之下會有怎樣的效果,今天先說下給Logcat添加過濾器的方法。
正常剛打開Eclipse會有一個All message過濾器(其實就是沒過濾),他會把所有的五種日誌全部列印出來。另外當我們創建項目的時候,會產生一個com.xxx.xxx的過濾器,這是運行項目時自動創建的,點擊這個過濾器就能看到這個項目的日誌信息。這里我們嘗試添加一個自定義的過濾器。


當前我們選擇的級別是verbose,是前面講過的五種級別中最低的等級,也就是說無論我們用Log.v()、Log.d()、Log.i()、Log.w()、log.e()當中的哪一種方法,這條日誌都會被列印出來。以此類推,如果我們選擇的控制級別是debug的話,那麼使用Log.v是無法列印出這條語句的,只有用debug及以上的方法才可以。換個角度說,如果我們將當前的等級控制選擇在info、warn或者error,那麼上面的語句也不會列印出來,因為代碼中我們使用的列印方法是Log.d()。通過日誌控制可以很快的定位到我們需要的信息,有效地提高解決問題的效率,確實比System.out.println()好用多了。

⑵ 怎麼用eclipse還有logcat命令的過濾log信息

1. 只顯示需要的輸出,白名單
最方便的當然是通過管道使用 grep 過濾了,這樣可以使用 grep 強大的正則表達式匹配。簡單的匹配一行當中的某個字元串,例如 MyApp:
adb logcat | grep MyApp
adb logcat | grep -i myapp #忽略大小寫。
adb logcat | grep --color=auto -i myapp #設置匹配字元串顏色。更多設置請查看 grep 幫助。

進階一點可以使用 grep 的正則表達式匹配。例如上一個例子會匹配一行中任意位置的 MyApp,可以設置為僅匹配 tag。默認的 log 輸出如下,如果修改過輸出格式相應的表達式也要修改。
I/CacheService( 665): Preparing DiskCache for all thumbnails.

可以看出 tag 是一行開頭的第三個字元開始,根據這點寫出表達式:
adb logcat | grep "^..MyApp"

根據這個格式也可以設置只顯示某個優先順序的 log,再匹配行首第一個字元即可。例如僅顯示 Error 級別 tag 為 MyApp 的輸出:
adb logcat | grep "^E.MyApp"
當然也可以匹配多個,使用 | 分割多個匹配表達式,要加轉義符。例如要匹配 tag 為 MyApp 和 MyActivity 的輸出:
adb logcat | grep "^..MyApp\|^..MyActivity"
adb logcat | grep -E "^..MyApp|^..MyActivity" #使用 egrep 無須轉義符

2. 過濾不需要的輸出,黑名單
還是使用 grep,用法也跟上面的一樣,加一個 -v 即可。例如要過濾 tag 為 MyApp 和 MyActivity 的輸出:
adb logcat | grep -v "^..MyApp\|^..MyActivity"
adb logcat | grep -vE "^..MyApp|^..MyActivity" #使用 egrep 無須轉義符

3. 顯示同一個進程的所有輸出
有時一個程序裡面的 tag 有多個,需要輸出該程序(同一個 PID)的所有 tag;僅使用 tag 過濾有時也會漏掉一些錯誤信息,而一般錯誤信息也是和程序同一個 PID。還是通過 grep 實現,思路是先根據包名找到 pid 號,然後匹配 pid。寫成 shell 腳本如下,參數是程序的 java 包名(如 com.android.media)。
查看源代碼列印幫助\
#!/bin/bash

packageName=$1
pid=`adb shell ps | grep $packageName | awk '{print $2}'`

adb logcat | grep --color=auto $pid

4. 從當前開始顯示
logcat 有緩存,如果僅需要查看當前開始的 log,需要清空之前的。adb logcat -c && adb logcat

5. 過濾 log 文件
有時需要分析 log 文件,過濾 log 文件還是使用 grep。例如 log 文件為 myapp.log,要匹配 tag 為 MyApp 和 MyActivity 的輸出,然後輸出到 newmyapp.log:cat myapp.log | grep "^..MyApp\|^..MyActivity" > newmyapp.log
Windows 下推薦使用 Notepad++,一個免費強大的記事本,支持正則表達式查找替換。可以高亮顯示匹配內容,也可以刪除不需要的內容。
以上的技巧主要用到了 grep,其實 logcat 本身也有過濾功能,可以根據 tag、優先順序過濾 log,具體請參考 Android 官方文檔 Reading and Writing Logs。如果喜歡使用圖形界面,請參考 Using DDMS,DDMS 裡面的 logcat 也可以同樣過濾。

⑶ eclipse里的LogCat,tag標簽全是unknown

可以使用logcat過慮器來過慮不需要的日誌。
1. 只顯示需要的輸出,白名單
最方便的當然是通過管道使用 grep 過濾了,這樣可以使用 grep 強大的正則表達式匹配。簡單的匹配一行當中的某個字元串,例如 MyApp:
adb logcat | grep MyApp
adb logcat | grep -i myapp #忽略大小寫。
adb logcat | grep --color=auto -i myapp #設置匹配字元串顏色。更多設置請查看 grep 幫助。

進階一點可以使用 grep 的正則表達式匹配。例如上一個例子會匹配一行中任意位置的 MyApp,可以設置為僅匹配 tag。默認的 log 輸出如下,如果修改過輸出格式相應的表達式也要修改。
I/CacheService( 665): Preparing DiskCache for all thumbnails.

可以看出 tag 是一行開頭的第三個字元開始,根據這點寫出表達式:
adb logcat | grep "^..MyApp"

根據這個格式也可以設置只顯示某個優先順序的 log,再匹配行首第一個字元即可。例如僅顯示 Error 級別 tag 為 MyApp 的輸出:
adb logcat | grep "^E.MyApp"

當然也可以匹配多個,使用 | 分割多個匹配表達式,要加轉義符。例如要匹配 tag 為 MyApp 和 MyActivity 的輸出:
adb logcat | grep "^..MyApp\|^..MyActivity"
adb logcat | grep -E "^..MyApp|^..MyActivity" #使用 egrep 無須轉義符

2. 過濾不需要的輸出,黑名單
還是使用 grep,用法也跟上面的一樣,加一個 -v 即可。例如要過濾 tag 為 MyApp 和 MyActivity 的輸出:
adb logcat | grep -v "^..MyApp\|^..MyActivity"
adb logcat | grep -vE "^..MyApp|^..MyActivity" #使用 egrep 無須轉義符

3. 顯示同一個進程的所有輸出
有時一個程序裡面的 tag 有多個,需要輸出該程序(同一個 PID)的所有 tag;僅使用 tag 過濾有時也會漏掉一些錯誤信息,而一般錯誤信息也是和程序同一個 PID。還是通過 grep 實現,思路是先根據包名找到 pid 號,然後匹配 pid。寫成 shell 腳本如下,參數是程序的 java 包名(如 com.android.media)。
查看源代碼列印幫助
1 #!/bin/bash
2 packageName=$1
3 pid=`adb shell ps | grep $packageName | awk '{print $2}'`
4 adb logcat | grep --color=auto $pid
4. 從當前開始顯示
logcat 有緩存,如果僅需要查看當前開始的 log,需要清空之前的。
adb logcat -c && adb logcat

5. 過濾 log 文件
有時需要分析 log 文件,過濾 log 文件還是使用 grep。例如 log 文件為 myapp.log,要匹配 tag 為 MyApp 和 MyActivity 的輸出,然後輸出到 newmyapp.log:
cat myapp.log | grep "^..MyApp\|^..MyActivity" > newmyapp.log

Windows 下推薦使用 Notepad++,一個免費強大的記事本,支持正則表達式查找替換。可以高亮顯示匹配內容,也可以刪除不需要的內容。
以上的技巧主要用到了 grep,其實 logcat 本身也有過濾功能,可以根據 tag、優先順序過濾 log,具體請參考 Android 官方文檔 Reading and Writing Logs。如果喜歡使用圖形界面,請參考 Using DDMS,DDMS 裡面的 logcat 也可以同樣過濾。

⑷ 怎麼用eclipse還有logcat命令的過濾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標記出來的信息了。

閱讀全文

與eclipse過濾打日誌相關的資料

熱點內容
酒精蒸餾應注意什麼 瀏覽:245
邯鄲南污水處理廠技術 瀏覽:777
雞蛋皮怎麼洗暖瓶水垢 瀏覽:350
喜客odea咖啡機除垢 瀏覽:393
新馬3空調濾芯怎麼安裝 瀏覽:794
超濾膜乙腈 瀏覽:833
凈水機沒有回水怎麼辦 瀏覽:135
如何降低反滲透膜清洗成本 瀏覽:692
污水井內支架用什麼處理方式 瀏覽:506
飲水機溫控器控制什麼 瀏覽:428
反滲透膜殺菌 瀏覽:23
補茶幾的是什麼樹脂 瀏覽:815
工業純水設備價格多少 瀏覽:755
沁園牌管道式超濾凈水器裝法 瀏覽:528
濾芯安裝在什麼位置 瀏覽:549
上海10寸過濾芯多少錢一個 瀏覽:714
酸洗磷化污水處理設備哪裡賣 瀏覽:851
盼盼樹脂門隔音好嗎 瀏覽:203
納濾反沖洗頻率 瀏覽:437
高透明環氧樹脂里放動物 瀏覽:709