2016-06-30 9 views
1

Dies ist meine erste Frage, daher werden alle Hinweise zur Technik nützlich sein. :)Wie programmiere ich programmatisch das Speichern von Logcat in Datei auf Android-Gerät?

Hintergrund: Ich arbeite an Anwendung, die von begrenzten Benutzergruppe verwendet werden, und ich werde es nie auf Store setzen. App hat manchmal Probleme auf den Geräten der Clients und es scheint mir sehr nützlich zu sein, vollen Zugriff auf Logcat zu haben, da ich keinen Zugriff auf Geräte habe. Und ich weiß, dass ich den Nutzern eine "Debug" -App-Version geben muss - das ist kein Problem.

Also ich möchte Feature implementieren, die Benutzer (z. B. auf meine Anfrage) ermöglicht, Logcat in Datei umzuleiten, die an mich gesendet werden kann. Ich habe bereits das Umleiten in eine Datei implementiert, aber ich möchte dem Benutzer erlauben, das Speichern in der Datei zu deaktivieren, da er ziemlich schnell groß wird.

Für Umleitung Ich verwende

String cmd = "logcat -f " + file.getAbsolutePath(); 
Runtime.getRuntime().exec(cmd); 

Datei Aber wenn es ich kann es nicht deaktivieren aktiviert ist. Ich meine, hör auf in Datei zu speichern. Ich versuchte mit -c Option ohne Glück. Hat jemand eine Idee, was ich tun kann?

Antwort

0

Sie können es zurück zum Drucken zu stdout (Standard) schalten.

String cmd = "logcat -f stdout"; 
Runtime.getRundtime().exec(cmd); 
+0

Leider funktioniert das nicht auch ... Vielleicht ist es gar nicht möglich? Ich meine, es gibt viele Informationen darüber, wie man Druckprotokolle in Dateien umwandelt und keine Informationen darüber, wie man sie deaktiviert. BTW ist es normal, dass nach dem Umleiten von Logcat in Datei kann ich es immer noch in Android Studio logcat sehen? – bydziek

+0

@bydziek Ja, es ist normal, die Logcat-Traces zu sehen, die Sie auch in einem normalen Logcat-Aufruf an Ihre Datei weitergeleitet haben. Sie sind nur Kopien. Logcat hat einen Ringpuffer, der entweder in stdout (Konsole) oder in einer Datei gedruckt werden kann. Der Puffer wird nach der Verwendung von logcat nicht geleert. –

0

Ich habe keine Lösung für mein Problem gefunden, so bleibt es offen. Ich möchte hier nur meine Workaround verlassen, wie es nützlich sein könnte.

Also habe ich beschlossen, logcat Drucken auf stdout zu lassen und es einfach in Datei ablegen und dann auf Knopfdruck löschen. Diese Lösung hat einige Vorteile, da logcat in Dateien mit Zeitstempeln in Namen unterteilt ist, so dass ich nach dem Problem suchen kann, abhängig von der Zeit, wann etwas passiert ist.

0

Sie können "ps | grep logcat" aufrufen und es mit seiner PID beenden: "kill pid".