2016-05-03 443 views
12

私は大きなコードベースで見つけにくいバグを見つけようとしています。そのため、私はアプリに多くのログを記録しました。私はこれに取り組んでいる複数のテスターを持つことができるほど幸いです。しかし、私は多くの私のlogcatログが見つからないことがわかりました。彼らは「チャット」として隠されています。例logcatで "chatty"を無効にすることはできますか?

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

のために私はadbのコマンド

adb logcat -p

を使用していくつかの言及を見つけたが、私は-pのための任意のドキュメントを見つけることができません。私はまた、多くのデバイス(多分マシュマロのすべてのデバイス)でこれがサポートされていないことを発見しました。

Androidスタジオ/ Eclipseにデバイスを接続している以外は、「チャット」がログを非表示にするのを防ぐ手段がありますか?

+0

は、ここでM問題に関するいくつかの興味深い背景なる可能性がありますされたい:https://github.com/JakeWharton/pidcat/issues/102 – stkent

+0

私はこれを見ていたが、作るのかわかりませんでしたそれの。これは、マシュマロに相当する の 'adb logcat -p'を意味しますか? は です' adb logcat -v brief | 「pidcat」 ? – TheUmpteenth

+0

'pidcat'自体はここでは関係ありません。出力を読みやすくするlogcatのラッパーですが、コードベースのどこかで、Android Mに導入されたlogcatの動作の変更に対処しなければなりませんでした。 M/pre-Mのさまざまな振る舞いについていくつかの洞察を与えるかもしれない。 – stkent

答えて

2

bydefault build.gradleのデバッグ{}で真と偽有効になっている&私自身のデバッガとDEBUG_MODEを作成したが、Issue 202457 - android - Disable chatty filtering of log messages (I/chatty ... expire N lines) - Android Open Source Project - Issue Trackerコマンドに応じてきましたあなたは

adb logcat -P "" 
+1

ドキュメント:https://developer.android.com/studio/command-line/logcat.html – DrChandra

+1

これは非常に便利です。ログをホワイトリストに登録してブラックリストに登録できます。ありがとう – TheUmpteenth

0

私はDEBUG_WITH_STACKTRACE_MODE は私もドキュメントを見つけることができません

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

これは興味深いですが、私の問題がどのように解決するのかよくわかりません。 – TheUmpteenth

関連する問題