如何将 Android 日志条目存储为字符串

How to store Android Log entry as a string

我似乎找不到与此相关的答案或问题:

如何将 Android 日志条目存储到字符串中:

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

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

这样做的原因是我可以获得进程 ID 和线程 ID。当我尝试手动存储进程和线程 ID 时,线程 ID 与 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

我认为这样做不可能,但是您可以创建自己的对象来处理日志调用并将字符串实例变量设置为最后一条消息。然后您可以从对象

中检索此字符串

How do I store an Android Log entry to a string

你不能这样做。

来自 Log documentation

Generally, you should use the Log.v(), Log.d(), Log.i(), Log.w(), and Log.e() methods to write logs. You can then view the logs in logcat.

它们仅适用于 debug 部分中的 Logcat,因此我建议您寻找另一种方式来存储您的愿望。

例如,您可以创建一个 class,它存储您拥有的所有 Log,然后将其存储在您想要的任何位置。

I already know how to store some information into a seperate class but the reason I wanted Log.toString was for the time stamps, process IDs, and thread IDs

然后为这个特定的 class 创建更多属性,并在需要时传递它们。

要存储 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());