Android-Log-Levels einstellen

8

Ist es möglich, die Log-Level auf einem Gerät zu setzen, das nicht rooted ist? Daher möchte ich die Geräteprotokollebene irgendwie in "debuggen" ändern. Ist das etwas, was getan werden kann?

da es nicht verwurzelt ist, glaube ich nicht, dass setprop funktioniert. Ich kann die local.prop Datei auch nicht ändern, da ich dazu keine Berechtigungen habe.

anders als vielleicht Glück zu haben und ein verstecktes Menü zu finden, das die Loglevel enthält. Gibt es eine Möglichkeit für mich, das Protokolllevel auf andere Weise zu verbessern?

Danke für die Hilfe.

    
Dave Powell 23.04.2012, 22:20
quelle

2 Antworten

12

setprop :

  • ist vorübergehend, bis Sie Ihr Gerät neu starten, sogar auf gerooteten Telefonen.
  • Sie können Eigenschaften durch Neustarts beibehalten, wenn Sie sie in local.prop schreiben, was nur auf gerooteten Telefonen möglich ist.
  • Einige Eigenschaften sind schreibgeschützt und können nur geändert werden, wenn Sie einige Init-Dateien ändern. Das ist bei verwurzelten Telefonen vielleicht sogar unmöglich.
  • jedes Gerät (oder jede Firmware) kann einen anderen Satz von Eigenschaften haben. Ein gerootetes Telefon hätte nicht automatisch mehr.

Loglevels:

  • Wenn der Code, der das Protokoll ausgibt, " Log.d() " lautet, befindet er sich auf "Debug" -Ebene und Sie können dies nur ändern, wenn Sie den Code ändern und neu kompilieren. Es gibt nichts, was Protokollnachrichten verbirgt, wenn Sie unabhängig von der Ebene Log.? ausführen.
  • Das Android-Framework blendet einige Protokollnachrichten aus, wenn Sie eine Version Ihrer Firmware erstellt haben. Um diese anzuzeigen, müssen Sie Ihre Firmware als Debug-Build neu kompilieren. Keine Chance, diese auch auf einem gerooteten Telefon zu zeigen.
  • einige Nachrichten werden von einer lokalen Variablen im Code wie if (LOCAL_LOGV) Log.v(... gesteuert - Sie müssen den Code hier ändern, um auch diese zu sehen.
  • Einige Nachrichten werden von Config.LOGV (= immer false ) kontrolliert, siehe Konfiguration . Keine Möglichkeit, das gebrochene Verhalten auch hier zu ändern. Sie müssen neu kompilieren.
  • einige andere Logmeldungen sind ausgeblendet, bis Sie eine Eigenschaft aktivieren:

Beispiel

%Vor%

Wenn du adb shell setprop log.tag.SQLiteCompiledSql VERBOSE machst, solltest du diese Nachrichten sehen. Log-Nummer isLoggable ()

Ich kenne keinen globalen Loglevel.

    
zapl 24.04.2012, 07:33
quelle
2

Lassen Sie mich einen kleinen Ersatz für die Standard-Log-Klasse vorschlagen (ich bin der Autor)

Ссылка

Es ist abwärtskompatibel, Sie müssen also nur Ihre Importe ändern. Dann können Sie den minimalen Protokolllevel für Ihre App über Log.level(Log.D) oder Log.level(Log.W) etc einstellen, oder Sie können Protokolle mit Log.useLog(false) deaktivieren. Sie müssen Ihren vorhandenen Protokollierungscode nicht ändern.

Trotz seiner geringen Größe funktioniert dieser Logger sowohl mit JVM als auch mit Android, ermöglicht es Ihnen, den "tag" -Parameter zu überspringen, vereinfacht die Protokollierung mehrerer Werte, die durch Kommata getrennt sind oder eine Formatzeichenfolge verwenden. Es ist also sehr praktisch, einfach zu migrieren und fügt Ihrer APK-Größe nur ~ 4 Kilobyte hinzu.

    
zserge 14.06.2015 08:03
quelle

Tags und Links