先生们好日子。通常,任务是获取应用程序执行日志并通过邮件将它们发送给开发人员。我认为发送会有问题,但日志不会有问题。有一个代码:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class GetLogs {
public static String get(){
StringBuilder builder = new StringBuilder();
try {
Process process = Runtime.getRuntime().exec("logcat -d all");
BufferedReader bufferedReader = new BufferedReader(
new InputStreamReader(process.getInputStream()));
String line;
while ((line = bufferedReader.readLine()) != null) {
builder.append(line + "\n");
}
} catch (IOException e){
Log.d("Error getting logs");
}
return builder.toString();
}
}
该类只是捕获并返回日志,问题在于它捕获它们的标签。“logcat -d all”应该捕获所有带有d标签的日志,但是我手动输出的那些日志原则上不会捕获。我这样输出它(好吧,你永远不知道):
Log.d("MyLog","TEST");
上面的方法返回以下内容:
--------- beginning of system
01-26 08:42:37.797 1813 1827 E ActivityThread: Failed to find provider info for com.google.android.gms.chimera
--------- beginning of main
01-26 08:42:37.797 1813 1827 I chatty : uid=10080(tanat.androidtesttask) expire 8 lines
01-26 08:42:37.805 1813 1829 I chatty : uid=10080(tanat.androidtesttask) expire 1 line
01-26 08:42:37.900 1813 1831 I chatty : uid=10080(tanat.androidtesttask) expire 24 lines
01-26 08:42:39.136 1813 1832 I chatty : uid=10080(tanat.androidtesttask) expire 9 lines
01-26 08:43:19.769 1813 1848 I chatty : uid=10080(tanat.androidtesttask) expire 15 lines
01-26 08:43:20.075 1813 1813 I chatty : uid=10080(tanat.androidtesttask) expire 6 lines
01-26 08:57:52.638 1974 1974 I chatty : uid=10080(tanat.androidtesttask) expire 27 lines
01-26 08:57:52.670 1974 1988 E ActivityThread: Failed to find provider info for com.google.android.gms.chimera
01-26 08:57:52.670 1974 1988 I chatty : uid=10080(tanat.androidtesttask) expire 8 lines
01-26 08:57:52.678 1974 1990 I chatty : uid=10080(tanat.androidtesttask) expire 1 line
01-26 08:57:52.699 1974 1992 I chatty : uid=10080(tanat.androidtesttask) expire 39 lines
01-26 08:57:53.029 1974 1993 I chatty : uid=10080(tanat.androidtesttask) expire 9 lines
01-26 09:02:55.283 2073 2073 I chatty : uid=10080(tanat.androidtesttask) expire 17 lines
01-26 09:02:55.317 2073 2087 E ActivityThread: Failed to find provider info for com.google.android.gms.chimera
01-26 09:02:55.317 2073 2087 I chatty : uid=10080(tanat.androidtesttask) expire 8 lines
01-26 09:02:55.322 2073 2089 I chatty : uid=10080(tanat.androidtesttask) expire 1 line
01-26 09:02:55.347 2073 2091 I chatty : uid=10080(tanat.androidtesttask) expire 3 lines
--------- beginning of crash
01-26 09:02:55.355 2073 2073 E AndroidRuntime: FATAL EXCEPTION: main
01-26 09:02:55.355 2073 2073 E AndroidRuntime: Process: tanat.androidtesttask, PID: 2073
01-26 09:02:55.355 2073 2073 E AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{tanat.androidtesttask/tanat.androidtesttask.activity.MainActivity}: java.lang.ArithmeticException: divide by zero
01-26 09:02:55.355 2073 2073 E AndroidRuntime: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
01-26 09:02:55.355 2073 2073 E AndroidRuntime: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
01-26 09:02:55.355 2073 2073 E AndroidRuntime: at android.app.ActivityThread.-wrap11(ActivityThread.java)
01-26 09:02:55.355 2073 2073 E AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
01-26 09:02:55.355 2073 2073 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:102)
01-26 09:02:55.355 2073 2073 E AndroidRuntime: at android.os.Looper.loop(Looper.java:148)
01-26 09:02:55.355 2073 2073 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:5417)
01-26 09:02:55.355 2073 2073 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
01-26 09:02:55.355 2073 2073 E AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
01-26 09:02:55.355 2073 2073 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
01-26 09:02:55.355 2073 2073 E AndroidRuntime: Caused by: java.lang.ArithmeticException: divide by zero
01-26 09:02:55.355 2073 2073 E AndroidRuntime: at tanat.androidtesttask.activity.MainActivity.onCreate(Unknown Source)
01-26 09:02:55.355 2073 2073 E AndroidRuntime: at android.app.Activity.performCreate(Activity.java:6237)
01-26 09:02:55.355 2073 2073 E AndroidRuntime: at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
01-26 09:02:55.355 2073 2073 E AndroidRuntime: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
01-26 09:02:55.355 2073 2073 E AndroidRuntime: ... 9 more
01-26 09:03:15.533 2102 2102 I chatty : uid=10080(tanat.androidtesttask) expir
事实上,如果您添加更多我编写的日志,这就是您所需要的。请告诉我,怎么做?
我使用这个构造: