我们可以在logcat中关闭“聊天”吗?

所以我试图在大型代码库中find一个难以捉摸的bug。 因此,我在我的应用程序中添加了大量日志记录。 我很幸运,有多个测试人员正在研究这个问题。 但是,我发现很多我的logcat日志都丢失了。 他们被隐藏为’健谈’。 例如

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

我发现有人提到使用adb命令

adb logcat -p

但我找不到-p的任何文档。 我还发现有很多设备(可能是Marshmallow上的所有设备)都不支持。

除了将设备插入Android Studio / Eclipse之外,有没有办法阻止“聊天”隐藏我的日志?

我也找不到文档,但根据问题202457 – android – 禁用对日志消息的聊天过滤(I / chatty …过期N行) – Android开源项目 – 问题跟踪器你想要的命令是

 adb logcat -P "" 

我已经创建了自己的调试器,并且在build.gradle debug {}中启用了DEBUG_MODE和DEBUG_WITH_STACKTRACE_MODE,并且默认为false

 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 * @param message String * @author Android Lead */ public static  void logInfo(Class 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 * @param message String * @author Android Lead */ public static  void logWarning(Class 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 * @param message String * @author Android Lead */ public static  void logError(Class 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 * @param message String * @author Android Lead */ public static  void logError(Class 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 } }