這是我對logcat的理解,也許有一些錯誤,歡迎任何意見:
關於在手機中的日誌文件: 從frameworks/base/core/jni/android_util_Log.cpp
我們可以看到所有的日誌將被寫入/dev/log/
默認情況下設備中的文件夾。 主要寫入/dev/log/main
無線電將被寫入/dev/log/radio
... 因爲都是操作系統的I/O文件。所以當手機重新啓動時會被清除。這些文件大小有一定的限制,如果大小達到限制,舊的日誌將被覆蓋。
關於Logcat: Logcat是一個讀取或重新輸出日誌文件的工具。它安裝在手機的系統/ bin /文件夾中。我不讀logcat.cpp
的每一個代碼;但我可以說logcat應用程序將默認讀取system/logcat/main中的日誌文件,並根據您使用的參數在屏幕或文件中輸出它們。
的是如何生成的日誌: 如果你看到的android.util.log的源代碼,你可以找到所有log.d/log.e將使用JNI方法寫入日誌文件的日誌,如上所述。
public static native int println_native(int bufID,int priority, String tag, String msg);
您可以找到JNI方法here。如果你對它感興趣,你可以閱讀源代碼來找到它在那裏做什麼。
將logcat保存到您想要的特定文件: 基於Log I/O,開發人員可以編寫應用程序將日誌保存到手機SD卡中的文件中,以便我們可以保留更多日誌或更大的日誌文件。 最簡單的方法是使用Runtime.exec()
來執行logcat應用程序: 您可以監視BOOT完成的接收器以啓動logcat命令,將所有logcat的日誌讀取到您自己的文件中。
例如:
String cmd = "logcat -v time -f yourown.file"
Process process = Runtime.getRuntime().exec(cmd);
關於4,我會做這init.rc,作爲一個腳本在啓動系統。 – elcuco
是的,我想它可以工作。像這樣:'service goldfish-logcat/system/bin/logcat >> yourfileonsdcard oneshot'它是一個模擬器的腳本。 – buptcoder
@buptcoder感謝您的好評。我一直在Android文檔中查找,並找不到它! – Alan