2012-07-20 68 views
12

我正在使用三星Galaxy S3設備進行開發,我的應用程序正在使用相機。 在logcat中,有一個由本地系統生成的輸出,標記Camera-JNI以每秒20次的速度寫入logcat,導致logcat非常快地清除最舊的條目。在Android中禁用本機logcat輸出

是否可以從已安裝的應用程序或系統日誌中禁用日誌以阻止此問題?過濾器不起作用,因爲logcat仍然被填滿並且行仍在被分類。

謝謝。

編輯

文檔says這樣的:

您可以通過設置系統屬性更改默認的級別:setprop log.tag.<YOUR_LOG_TAG> <LEVEL>。您還可以創建一個local.prop文件,其中包含以下內容: log.tag.<YOUR_LOG_TAG>=<LEVEL>並將其放置在/data/local.prop中。

EDIT 2

我已經這樣做(生根設備,推local.prop文件/數據和重新啓動),但標籤仍然顯示

+0

這並不直接回答你的問題,但你可以增加LogCat緩衝區中的行數(首選項 - > Android - > LogCat - > LogCat消息緩衝數) – curioustechizen 2012-07-24 10:16:48

+1

'local.prop'文件應該放在'/ data'目錄(即Android文件系統根目錄下的「data」目錄),如下所示:'adb push local.prop/data'。但在大多數情況下,您將無法替換/修改該文件,直到您爲電話創建電話。 – Idolon 2012-07-24 10:20:20

+0

@Idolon我紮根手機,創建了一個'local.prop'文件,這行:'log.tag.Camera-JNI = SUPPRESS',我把它推到了'/ data'文件夾,但我仍然看到那個日誌標記在logcat所以我猜文檔是錯誤的 – 2012-07-24 11:32:11

回答

1

你可以嘗試像adb shell setprop log.tag.Camera-JNI ERROR。如果不起作用,只需過濾日誌或將其轉儲到文件,然後使用grep找到您感興趣的行或用grep -v Camera-JNI過濾掉相機。

+0

第一個沒有工作,我試過adb shell setprop log.tag.Camera-JNI SUPPRESS沒有任何效果。第二個是隱藏你不想看到的標籤,但是這並不能防止logcat被快速填滿,當Eclipse Logcat Viewer中的舊行被填滿時丟棄舊的行 – 2012-07-24 09:52:28

+2

那麼在這種情況下,是不是你的代碼,你不能做任何事情,除了:1)抱怨三星,或2)安裝一個自定義ROM不這樣做。 – 2012-07-24 13:45:05

+0

我不確定這是否可行,但第三種選擇是修改[Eclipse/DDMS代碼](http://omapzoom.org/?p=platform/sdk.git;a=blob; f = ddms/libs/ddmuilib/src/com/android/ddmuilib/logcat/LogCatReceiver.java; hb = HEAD),這樣它就可以過濾出不需要的條目而不填充緩衝區。 – Joe 2012-07-28 19:09:23

7

我可以看到通過檢查Android源代碼(2.3.x版本)以下:

執行

​​

不會在這裏(frameworks/base/core/jni/android_hardware_Camera.cpp)工作,如記錄正在使用LOGV()宏完成。這種記錄方法不使用屬性來檢測某些組件是否希望禁用日誌記錄。就我能夠通過android代碼追蹤調用而言。

因此,使用setprop(...)不會爲使用Android系統組件禁用日誌記錄工作,但是當日志來自用戶的應用程序等用Java編寫的,其使用base/core/java/android/util/Log.javaframeworks/base/core/jni/android_util_Log.cpp登錄它應該工作。我的猜測是,android_util_Log_isLoggable()是什麼被用來過濾。

恕我直言,我沒有看到從您的設備來源構建並禁用您正在使用的相機代碼中的LOGV宏的其他選擇。

0

如果你想看到具體標籤使用:

logcat -s YourTag:* SecondTag:* ThirdTag:* ... 

您還可以使用adb logcat

只要指定<TAG>:*多次要篩選您需要的標籤。

例如:adb logcat -s AndroidRuntime:* MyApp:*過濾器AndroidRuntimeMyApp標籤。因此,您可以看到所有未捕獲的異常(崩潰)以及您的應用程序的所有日誌。