2016-05-03 6 views
12

Also versuche ich einen schwer fassbaren Fehler in einer großen Codebasis zu finden. Daher habe ich viel in meine App eingeloggt. Ich habe das Glück, dass mehrere Tester daran arbeiten. Ich habe jedoch festgestellt, dass viele meiner Logcat-Logs fehlen. Sie sind als 'gesprächig' versteckt. Zum BeispielKönnen wir "chatty" in logcat ausschalten?

1799 12017 I logd: uid=10007 chatty comm=Binder_B, expire 4 lines

Ich habe einige Erwähnung mit dem adb Befehl gefunden

adb logcat -p

aber ich kann keine Dokumentation für die -p finden. Ich habe auch festgestellt, dass mit vielen Geräten (möglicherweise alle Geräte auf Marshmallow) dies nicht unterstützt wird.

Abgesehen davon, dass das Gerät an Android Studio/Eclipse angeschlossen ist, gibt es eine Möglichkeit, zu verhindern, dass "chatty" meine Protokolle versteckt?

+0

einige interessante Hintergrundinformationen über die M Fragen könnten hier sein: https://github.com/JakeWharton/pidcat/issues/102 – stkent

+0

ich das gesehen hatte, war aber nicht sicher, was zu machen davon. Bedeutet dies, dass das Marshmallow-Äquivalent von 'adb logcat -p' ' adb logcat -v kurz | ist pidcat' ? – TheUmpteenth

+0

'pidcat' selbst ist hier nicht relevant - es ist ein Wrapper um logcat, der die Ausgabe einfacher zu lesen macht - aber irgendwo in ihrer Codebasis mussten sie mit einer Änderung des Logcat-Verhaltens in Android M umgehen. Wenn Sie das Problem finden/Änderung könnte einige Einblicke in verschiedene Verhaltensweisen auf M/Pre-M geben. – stkent

Antwort

2
+1

Dokumentation: https://developer.android.com/studio/command-line/logcat.html – DrChandra

+1

Das sieht ziemlich nützlich aus, Sie können die Protokolle tatsächlich auf die weiße Liste setzen und auf die schwarze Liste setzen. Vielen Dank – TheUmpteenth

0

Ich habe meine eigenen Debugger und DEBUG_MODE erstellt & DEBUG_WITH_STACKTRACE_MODE in build.gradle Debug wahr aktiviert sind {} und falsche bydefault

public class AppLoger { 
     public static boolean DEBUG_MODE = BuildConfig.LOG_DEBUG_MODE; 
public static boolean DEBUG_WITH_STACKTRACE_MODE =  BuildConfig.LOG_DEBUG_WITH_STACKTRACE_MODE; 

/** 
* @param cls  Class<T> 
* @param message String 
* @author Android Lead 
*/ 
public static <T> void logInfo(Class<T> cls, String message) { 
    if (DEBUG_MODE || DEBUG_WITH_STACKTRACE_MODE) { 
     String tag = cls.getName(); 
     Log.i(tag, "-----"); 
     Log.i(tag, LogType.INFO + ": " + message); 
     if (DEBUG_WITH_STACKTRACE_MODE) { 
      Log.i(tag, getStackTrace()); 
     } 
    } 
} 

/** 
* @param cls  Class<T> 
* @param message String 
* @author Android Lead 
*/ 
public static <T> void logWarning(Class<T> cls, String message) { 
    if (DEBUG_MODE || DEBUG_WITH_STACKTRACE_MODE) { 
     String tag = cls.getName(); 
     Log.w(tag, "-----"); 
     Log.w(tag, LogType.WARNING + ": " + message); 

     if (DEBUG_WITH_STACKTRACE_MODE) { 
      Log.w(tag, getStackTrace()); 
     } 
    } 
} 

/** 
* @param cls  Class<T> 
* @param message String 
* @author Android Lead 
*/ 
public static <T> void logError(Class<T> cls, String message) { 
    if (DEBUG_MODE || DEBUG_WITH_STACKTRACE_MODE) { 
     String tag = cls.getName(); 
     Log.e(tag, "-----"); 
     Log.e(tag, LogType.ERROR + ": " + message); 

     if (DEBUG_WITH_STACKTRACE_MODE) { 
      Log.e(tag, getStackTrace()); 
     } 
    } 
} 

/** 
* @param cls  Class<T> 
* @param message String 
* @author Android Lead 
*/ 
public static <T> void logError(Class<T> cls, String message, Throwable e) { 
    if (DEBUG_MODE || DEBUG_WITH_STACKTRACE_MODE) { 
     String tag = cls.getName(); 
     Log.e(tag, "-----"); 
     Log.e(tag, LogType.ERROR + ": " + message, e); 

     if (DEBUG_WITH_STACKTRACE_MODE) { 
      Log.e(tag, getStackTrace()); 
     } 
    } 
} 

/** 
* @param tag String 
* @param msg String/JSON/ArrayList 
* @author Android Lead 
*/ 
public static void e(String tag, Object msg) { 
    if (DEBUG_MODE || DEBUG_WITH_STACKTRACE_MODE) 
     Log.e(tag, "" + msg); 
} 

/** 
* @param tag String 
* @param msg String/JSON/ArrayList 
* @author Android Lead 
*/ 
public static void i(String tag, Object msg) { 
    if (DEBUG_MODE || DEBUG_WITH_STACKTRACE_MODE) 
     Log.i(tag, "" + msg); 
} 

/** 
* @author Android Lead 
*/ 
private static String getStackTrace() { 
    StringWriter sw = new StringWriter(); 
    PrintWriter pw = new PrintWriter(sw); 
    new Throwable().printStackTrace(pw); 
    return sw.toString(); 
} 

private enum LogType { 
    INFO, WARNING, ERROR 
} 
} 
+3

Das ist interessant, aber ich bin mir nicht sicher, wie es mein Problem löst. – TheUmpteenth

Verwandte Themen