我們在做app測試的過程中,肯定會遇到需要抓取日志問題,這幾天安靜也遇到了此問題,后台日志生成的太多了,保存本地了吧,設備多沒有這么USB,通過wifi連接又太麻煩,你說這怎么是好?不要着急,我們往下看
adb logcat介紹
adb 是android一個操作命令,前面有講過----常用的adb命令
logcat 是android一個打印日志的工具,當然也可以通過命令行進行操作。最主要的是不僅僅可以PC端使用,還可以在app內部進行使用
logcat原理
格式
[adb] logcat [<option>] … [<filter – spec>] …
PC端使用:
adb logcat
shell模式下使用:
logcat
logcat 命令行參數
參數 | 描述 |
-b | 加載一個可使用的日志緩沖區供查看,比如event和radio。默認值是main |
-c | 清除緩沖區中的全部日志並退出(清除完后可以使用-g查看緩沖區) |
-d | 將緩沖區的log轉存到屏幕中然后退出 |
-f | 將log輸出到指定的文件中<文件名>.默認為標准輸出(stdout) |
-g | 打印日志緩沖區的大小並退出 |
-n | 設置日志的最大數目<count>,默認值是4,需要和-r選項一起使用 |
-r | 沒<kbytes>時輸出日志,默認值是16,需要和-f選項一起使用 |
-s | 設置過濾器 |
-v | 設置輸出格式的日志消息。默認是短暫的格式。支持的格式列表 |
PC端使用
pc端使用肯定是結合這adb進行使用
# 查看日志 adb logcat # 過濾關鍵字日志 win用find mac 用grep adb logcat | find "xxxxx" # 保存日志 adb logcat >路徑\名稱.txt # 保存過濾日志 adb logcat >find "xxxx" >路徑\名稱.txt # 清空緩存日志 adb logcat -c # 打印緩沖區大小並退出 adb logcat -g
接下來就是重點了,也是這個地方幫我解決了問題。
app端
在app端使用的時候必須要通過adb shell 進入到app內中,進入adb shell 其實就是android的終端(也就是liunx系統中,就可以敲命令了)
我們通過幾個需求來了解app端的log使用方法:
需求1:實時過濾“XXX”日志並保存下來
PC端的方法上面已經寫過了可以參考下,app端的可以這樣寫
# app端保存日志 logcat -s 標簽名 -f /app內存路徑/名稱.txt
# 通過保存在app中,然后再通過adb pull 提取出來
我們知道在PC端中-s是過濾關鍵字,但是這個地方不是,這個地方是過濾的日志標簽名(就是打印日志前面寫的標簽類型)
需求2:不連接usb實時保存日志
可能會有人想通過wifi連接,但是如果我們的app不在辦公室測試的時候怎么通過wifi連接呢?
# 不一直連接usb實時抓取日志 logcat -s 標簽名 -f /路徑/名稱.txt & # & 表示后台運行
通過這個命令,只要手機不關機,命令就會一直進行中,這樣我們不用實時連接USB也能實時抓取日志了
注意:app的命令必須要進入到adb shell 的狀態下
就是這個命令幫助了安靜解決了領導的要求, 監控的設備多了,還不用連接USB。只需要2行命令,多么簡單,快去嘗試下吧~~~