Можем ли мы отключить "chatty" в logcat?
Итак, я пытаюсь найти неуловимую ошибку в большой базе кода. Таким образом, я поместил много записей в мое приложение. Мне повезло, что над этим работают несколько тестеров. Тем не менее, я обнаружил, что много журналов logcat отсутствует. Они скрыты как "болтливые". Например
1799 12017 I logd: uid=10007 chatty comm=Binder_B, expire 4 lines
Я нашел упоминание об использовании команды adb
adb logcat -p
но я не могу найти документацию для -p. Я также обнаружил, что с большим количеством устройств (возможно, все устройства на Marshmallow) это не поддерживается.
Помимо того, что устройство подключено к Android Studio/Eclipse, есть ли способ остановить "chatty" от скрытия моих журналов?
Ответы
Ответ 1
Я также не могу найти документацию, но в соответствии с Проблема 202457 - android - Отключить чатовую фильтрацию сообщений журнала (I/chatty... expire N lines ) - Android Open Source Project - Issue Tracker, команда, которую вы хотите, -
adb logcat -P ""
Ответ 2
Я создал собственный отладчик и DEBUG_MODE и DEBUG_WITH_STACKTRACE_MODE
включены true в build.gradle debug {} и false 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
}
}