Android O版本自訂日誌輸出目錄

來源:互聯網
上載者:User

標籤:define   ima   adb shell   root   它的   因此   分享圖片   檔案   def   

Android原生系統預設情況下,log是不輸出到檔案的,這樣對於只能用模擬器進行開發實驗的人來說,不是很方便。

當然android預設不輸出log到檔案也是考慮到輸入日誌到檔案會引起效能問題。

下面提供一種將日誌定向到檔案的方法

修改system/core/logcat/logcatd.rc檔案,在檔案的最後添加如何代碼:

# define my log directoryservice applogcat /system/bin/logcat -v threadtime -r 4096 -n 10 -f  /data/log/android_logs/applogcat_log     class late_start     user root.     group system     disabled     writepid /dev/cpuset/system-background/tasks

這裡定義了一個名為applogcat的服務,服務對應的可執行檔為/system/bin/logcat,後面的/data/log/android_logs/applogcat_log表示日誌的輸出檔案路徑

修改system/core/rootdir/init.rc檔案,在on post-fs-data階段的最後添加如下代碼

注意,這裡在建立data/log/android_logs目錄時,分兩步進行,因為在.rc檔案裡面不支援跨級建立檔案(夾),因此這裡先建立了log目錄,然後才建立它的子目錄android_logs。

最後,別忘了使用start命令,啟動剛才建立的applogcat服務。

到這裡,Log Service和目錄已經建立好了。

此時,編譯一下,重新手機發現只有目錄,並沒有對應的記錄檔產生。

使用adb shell進行手機,dmesg查看一下kernel日誌,發現SELinux許可權報錯。

此時,正確的方法應該是給/data/log/android_logs目錄添加正確的SELinux許可權,由於對SELinux部分內容並不瞭解,暫時不懂如何添加許可權,於是直接從代碼上把SELinux給關了。(不推薦這種方法,只是自己玩那無所謂)

從代碼層級關閉SELinux的方法很簡單,修改/system/core/init/init.cpp中的selinux_initialize(bool in_kernel_domain)方法即可,將其中的is_enforcing置為0即可。

當然,這並不是正確的方法,等後面學習了SELinux部分的內容後,再來更新正確的方法,先把這個方法記錄下來。

 

Android O版本自訂日誌輸出目錄

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.