0

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

如何将 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
4

2 回答 2

2

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

你不能做这个。

Log documentation

通常,您应该使用 Log.v()、Log.d()、Log.i()、Log.w() 和 Log.e() 方法来写入日志。然后您可以在 logcat 中查看日志。

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

例如,您可以创建一个类,该类存储Log您拥有的所有内容,然后将其存储在您想要的任何地方。

我已经知道如何将一些信息存储到单独的类中,但我想要 Log.toString 的原因是时间戳、进程 ID 和线程 ID

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

存储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());
于 2019-01-09T20:20:09.520 回答
0

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

于 2019-01-09T20:15:15.333 回答