2012-07-20 38 views
12

Korzystam z urządzenia Samsung Galaxy S3 do programowania, a moja aplikacja korzysta z aparatu. W kodzie logcat znajduje się plik wyjściowy utworzony przez system natywny ze znacznikiem Camera-JNI, który jest zapisywany w logcat, podobnie jak 20 razy na sekundę, co powoduje, że program logcat bardzo szybko czyści najstarsze wpisy.Wyłącz wyjściowe dane wyjściowe logcat w Androidzie

Czy można wyłączyć dzienniki z już zainstalowanych aplikacji lub dzienników systemowych, aby temu zapobiec? Filtry nie działają, ponieważ logcat jest nadal wypełniony, a linie nadal są zaznaczone.

Dziękuję.

EDIT

Dokumentacja says to:

Możesz zmienić domyślny poziom poprzez ustawienie właściwości systemu: setprop log.tag.<YOUR_LOG_TAG> <LEVEL>. Można również utworzyć plik local.prop zawierający następujące elementy: log.tag.<YOUR_LOG_TAG>=<LEVEL> i umieścić go w /data/local.prop.

EDIT 2

ja już to zrobił (zakorzenienia urządzenie, naciskając/plik local.prop do danych i ponownym uruchomieniu), ale znacznik jest nadal pojawiają

+0

To nie odpowiada bezpośrednio na twoje pytanie, ale możesz zwiększyć liczbę linii w buforze LogCat (Preferencje -> Android -> LogCat -> Liczba komunikatów LogCat do bufora) – curioustechizen

+1

'local.prop' plik należy umieścić w katalogu '/ data' (np." katalog danych "w katalogu głównym systemu plików Android), na przykład:' adb push local.prop/data'. Ale w większości przypadków nie będziesz w stanie zastąpić/zmodyfikować tego pliku, dopóki nie zrootujesz telefonu. – Idolon

+0

@Idolon Zrootowałem telefon, utworzyłem plik 'local.prop' z następującym wierszem:' log.tag.Camera-JNI = SUPPRESS' i wepchnąłem go do folderu '/ data', ale wciąż widzę log z tym tag w logcat, więc myślę, że dokumenty są złe –

Odpowiedz

1

Można spróbować czegoś podobnego adb shell setprop log.tag.Camera-JNI ERROR. Jeśli to nie zadziała, po prostu przefiltruj dziennik lub zrzuć go do pliku i użyj grep, aby znaleźć interesujące Cię linie lub odfiltrować kamerę za pomocą grep -v Camera-JNI.

+0

Pierwszy nie działał, próbowałem ustawić adb shell log.tag.Camera-JNI SUPPRESS bez żadnego efektu. Druga to po prostu ukrywanie znaczników, których nie chcesz widzieć, ale to nie przeszkadza w szybkim zapełnieniu logcat, odrzucając stare wiersze w przeglądarce Eclipse Logcat, kiedy jest pełna. –

+2

Cóż, w tym przypadku, ponieważ nie jest twoim kodem, naprawdę nie możesz zrobić nic innego niż: 1) złożyć skargę do Samsunga, lub 2) zainstalować niestandardową ROM, która tego nie robi. –

+0

Nie jestem pewien, czy jest to możliwe, ale trzecią opcją byłoby zmodyfikowanie [kodu Eclipse/DDMS] (http://omapzoom.org/?p=platform/sdk.git;a=blob; f = ddms/libs/ddmuilib/src/com/android/ddmuilib/logcat/LogCatReceiver.java; hb = HEAD), aby mógł odfiltrować niepożądane wpisy bez wypełniania swojego bufora. – Joe

7

widzę brzmienie bada kod źródłowy (Android 2.3.x):

wykonujące

shell setprop log.tag.XYZ 

nie zadziała tutaj (frameworks/base/core/jni/android_hardware_Camera.cpp), a rejestracja jest wykonywana przy użyciu LOGV() makro . Ta metoda rejestrowania nie wykorzystuje właściwości do wykrywania, czy jakiś składnik chce wyłączyć rejestrowanie. To jest tak daleko, jak jestem w stanie śledzić połączenia za pomocą kodu android.

Tak więc używanie setprop(...) nie będzie działało dla wyłączenia rejestrowania z systemu Android, ale powinno działać, gdy logi pochodzą z aplikacji użytkownika itp. Napisane w Javie, które używają do logowania base/core/java/android/util/Log.java i frameworks/base/core/jni/android_util_Log.cpp. Domyślam się, że do filtrowania używa się android_util_Log_isLoggable().

IMHO Nie widzę innej alternatywy niż budowanie ze źródła dla twojego urządzenia i wyłączanie makr LOGV w kodzie aparatu, którego używasz.

0

Jeśli chcesz zobaczyć konkretne znaczniki używać:

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

Można również użyć adb logcat

Wystarczy określić <TAG>:* tyle razy, ile chcesz filtrować tagów musisz.

przykład:adb logcat -s AndroidRuntime:* MyApp:* filtry AndroidRuntime i MyApp znaczniki. Widzisz wszystkie nieprzechwycone wyjątki (awarie), a także wszystkie dzienniki aplikacji.

Powiązane problemy