Как сохранить запись журнала Android в виде строки - PullRequest
0 голосов
/ 09 января 2019

Не могу найти ответ или вопрос по этому поводу:

Как сохранить запись журнала Android в строке:

Log.i(TAG, "onCreate: start: ");

String s = /* get last Log entry */.toString();

Причина этого в том, что я могу иметь идентификатор процесса и идентификаторы потока. Когда я пытаюсь вручную сохранить идентификаторы процессов и потоков, идентификаторы потоков отличаются от напечатанных в Logcat:

Log.i(TAG, "#checkWifiConnection: start");
String s = Integer.toString(android.os.Process.myPid()) + " " + Integer.toString(android.os.Process.getThreadPriority(android.os.Process.myTid())) + " " + TAG;
System.out.println(s + "#checkWifiConnection: start");

Logcat показывает:

01-09 18:38:02.994 1558-2021 I/*~FETCH DATA: #checkWifiConnection: start

System.out показывает:

I/System.out: 1558 10 *~FETCH DATA#checkWifiConnection: start

Ответы [ 2 ]

0 голосов
/ 09 января 2019

Как сохранить запись в журнале Android в строку

Вы не можете сделать это.

С Log documentation

Обычно для записи журналов следует использовать методы Log.v (), Log.d (), Log.i (), Log.w () и Log.e (). Затем вы можете просмотреть журналы в logcat.

Они предназначены только для Logcat в разделе debug, поэтому я рекомендую вам поискать другой способ сохранить ваше желание.

Например, вы можете создать класс, в котором будут храниться все имеющиеся у вас Log, а затем хранить его в любом месте.

Я уже знаю, как хранить некоторую информацию в отдельном классе, но причина, по которой я хотел использовать Log.toString, заключалась в отметках времени, идентификаторах процессов и идентификаторах потоков

Затем создайте дополнительные атрибуты для этого конкретного класса и передайте их в любое время.

Для хранения Process id используйте

int pid = android.os.Process.myPid();

Для хранения Thread id используйте

int tid = android.os.Process.getThreadPriority(android.os.Process.myTid());

Для хранения метки времени используйте

SimpleDateFormat s = new SimpleDateFormat("yyyy-mm-dd hh:mm:ss");
String format = s.format(new Date());
0 голосов
/ 09 января 2019

Я не думаю, что это возможно сделать, однако вы можете создать свой собственный объект, который обрабатывает вызовы журнала и устанавливает переменную экземпляра строки для последнего сообщения. Затем вы можете извлечь эту строку из объекта

...