Я хочу читать журналы logcat в моем приложении и реагировать на них.
Я нашел следующий код:
try {
Process process = Runtime.getRuntime().exec("logcat -d");
BufferedReader bufferedReader = new BufferedReader(
new InputStreamReader(process.getInputStream()));
StringBuilder log=new StringBuilder();
String line = "";
while ((line = bufferedReader.readLine()) != null) {
log.append(line);
}
TextView tv = (TextView)findViewById(R.id.textView1);
tv.setText(log.toString());
}
catch (IOException e) {}
Этот код действительно возвращает журналы logcat, которые были сделаны до запуска приложения -
Но можно ли постоянно прослушивать даже новые журналы logcat?
android
logcat
android-logcat
Дэвид
источник
источник
Ответы:
Вы можете продолжать читать журналы, просто сняв флаг «-d» в приведенном выше коде.
Флаг "-d" дает команду logcat показать содержимое журнала и выйти. Если вы удалите флаг, logcat не завершит работу и продолжит посылать любую новую строку, добавленную к нему.
Просто имейте в виду, что это может заблокировать ваше приложение, если оно неправильно спроектировано.
удачи.
источник
Вы можете очистить свой logcat с помощью этого метода, который я использую для очистки после записи logcat в файл, чтобы избежать дублирования строк:
источник
С сопрограммами и официальными библиотеками lifecycle-livingata-ktx и lifecycle-viewmodel-ktx все просто:
использование
источник
WebView
вместоTextView
.Вот быстрый сборщик / вставка, который можно использовать для записи всех текущих или всех новых (с момента последнего запроса) элементов журнала.
Вы должны изменить / расширить это, потому что вы можете захотеть вернуть непрерывный поток, а не LogCapture.
"Руководство" Android LogCat: https://developer.android.com/studio/command-line/logcat.html
В вашем проекте, который выполняет регистрацию активности:
Если вы хотите захватить все, что вы вошли через "Регистратор"
Когда вы проголодались и хотите перекусить большим количеством поленьев
Вы можете получить захват в виде строки с
Или вы можете получить элементы журнала захвата с помощью
Не существует точного статического метода для захвата внешних ключей журнала, но, тем не менее, есть способ
Использование вышеизложенного также позволит вам вызвать
Logger.this.nextCapture
иностранного пленника.источник
git.hsusa.core.log.controller.AndroidLogController.java
; Вы можете использовать мою библиотеку hscore вместо этого «быстрого и грязного» решения. Чтобы вести журнал с помощью hscore, вы должны использовать:public final static SmartLogContext log = SmartLog.getContextFor("MyLogContext");
для начала. Это работает примерно так же с улучшенным API. Вы можете использовать мой трекер проблем git hub, если вам нужна ЛЮБАЯ помощь с этим.Флаг "-c" очищает буфер.
-c Очищает (очищает) весь журнал и закрывается.
источник
Я использую это в своем приложении, и оно работает. И вы можете использовать приведенный выше код в задаче таймера, чтобы он не останавливал ваш основной поток
источник