Wie werden die logcat-Meldungen gespeichert
Folgenden Wo sind die Android-logcat Dateien gespeichert? ich erfahren, dass logcat wird gespeichert, wie eine interne ring-buffer im kernel, die Größe ist 256 KByte. Anwendungen verwenden eine spezielle API zu bitten, den kernel um logs zu speichern.
Meine device-Protokolle sind wayyyyyy größer. Ich weiß das, weil, wenn ich adb logcat > adblogcat.txt
bekomme ich eine wirklich große Datei. Dies impliziert, dass "etwas" löscht den kernel-Puffer und speichert Sie in der Datei system (?) und adb logcat
liest aus dieser größeren Datei.
Kann mir jemand erklären, wie das funktioniert? Ich bin auf der Suche in https://github.com/cgjones/android-system-core/blob/master/logcat/logcat.cpp und ich kann nicht verstehen, die genauen details.
Bonus-Punkte an jemanden, der erklärt, was passiert, auf neu starten, ist das Protokoll gespeichert zwischen den Neustarts?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist mein Verständnis über logcat, vielleicht gibt es einige Fehler, begrüßen alle Kommentare:
Über log-Datei in das Telefon:
Aus der
frameworks/base/core/jni/android_util_Log.cpp
wir können sehen, dass alle log geschrieben werden in
/dev/log/
Ordner in Ihren Geräten Standard.main wird geschrieben werden in
/dev/log/main
radio geschrieben wird in
/dev/log/radio
...
weil alle I/O-Dateien-operator-system. So wird es gelöscht, wenn das Telefon neu gestartet wird. Und diese Dateien Größe haben einige Einschränkungen, wenn die Größe erreicht, die Beschränkung, die die alte log überschrieben wird.
Über Logcat:
Logcat ist ein Werkzeug, um zu Lesen oder zu re-Ausgabe der log-Dateien. Es installiert in das system/bin/- Ordner im Handy. Ich nicht Lesen Sie die jeden code von
logcat.cpp
; aber ich kann sagen, dass die logcat-Anwendung liest die log-Datei in system/logcat/main an Standard-und-Ausgang Sie in das Bild oder die Datei anhand der Parameter, die Sie verwenden.Darüber, wie das Protokoll generiert wird:
Wenn du dir den source-code von android.util.melden, finden Sie alle melden.d/log.e JNI-Methode zum schreiben der log-in log-Dateien, wie oben erwähnt.
public static native int println_native(int bufID,int priority, String tag, String msg);
Finden Sie die JNI-Methode hier. Wenn Sie interessiert sind, können Sie den Quellcode zu Lesen, um zu finden, was es dort tut.
Speichern Sie die logcat zu spezifischen Datei, die Sie möchten:
Auf der Basis des Log-I/O-Entwickler können eine Anwendung schreiben, wenn Sie das Protokoll speichern in einer Datei in SD-Karte in das Telefon, so dass wir halten können, die mehrere Protokolle oder größeren log-Datei.
Die einfachste Methode ist die Nutzung der
Runtime.exec()
zum ausführen der Anwendung logcat:Sie können überwachen, die BOOT-abgeschlossen-Empfänger, starten Sie Ihren logcat Befehl, alles zu Lesen logcat log in Ihren eigenen Dateien.
Beispiel:
service goldfish-logcat /system/bin/logcat >> yourfileonsdcard oneshot
es ist ein Skript für den emulator.