如何读取我的应用程序logcat并写入文件?

阿敏塔巴

我想在手机上读取应用程序日志,然后将其写入文件。我可以这样查看和检查我的日食日志:

12-26 11:53:07.456: I/power(188): *** set_screen_state 0
12-26 11:53:07.496: D/Sensors(188): Enable G-Sensor: en = 0
12-26 11:53:07.506: D/Sensors(188): mEnabled = 0x0
12-26 11:53:07.506: D/Sensors(188): /data/misc/AccPrmsF.ini does not exist
12-26 11:53:07.596: D/AccelerometerListener(340): enable(false)
12-26 11:53:07.686: V/TransportControlView(188): Create TCV com.android.internal.widget.TransportControlView@412f16a8
12-26 11:53:07.957: D/dalvikvm(188): GC_CONCURRENT freed 1852K, 52% free 11229K/23367K, paused 15ms+23ms
12-26 11:53:07.967: D/SurfaceFlinger(125): About to give-up screen, flinger = 0x15a1918
12-26 11:53:08.187: I/ActivityManager(188): Start proc com.google.android.gsf.login for service com.google.android.gsf.login/com.google.android.gsf.loginservice.GoogleLoginService: pid=25736 uid=10005 gids={3003, 1015, 1007, 2001, 3006}
12-26 11:53:08.207: D/PhoneStatusBar(27013): disable: < expand icons alerts ticker system_info back home RECENT* clock >
12-26 11:53:08.277: W/IInputConnectionWrapper(188): showStatusIcon on inactive InputConnection
12-26 11:53:08.297: D/PhoneStatusBar(27013): disable: < expand icons alerts ticker system_info BACK* HOME* RECENT CLOCK* >
12-26 11:54:16.604: W/ThrottleService(188): unable to find stats for iface rmnet0
12-26 12:00:24.983: D/dalvikvm(188): GC_EXPLICIT freed 1532K, 51% free 11674K/23367K, paused 6ms+22ms

但我想在手机上阅读。我怎样才能做到这一点?!

阿敏塔巴

从您的应用程序将日志写入logcat非常容易。阅读日志通常用于错误报告。

以下代码读取日志并将其写入文件:

public class LogTest extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        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);
            }

            String logFilePath = Environment.getExternalStorageDirectory() + File.separator + "LogTest.txt";

            File logFile = new File(logFilePath);
            if (!logFile.exists())
                logFile.createNewFile();

            FileOutputStream outStream = new FileOutputStream(logFile, true);
            byte[] buffer = log.toString().getBytes();

            outStream.write(buffer);
            outStream.close();
        } catch (Exception ex) {
            ex.printStackTrace();

        }
    }
}

另外,您还需要两个权限才能读取日志并将文件写入外部存储:

<uses-permission android:name="android.permission.READ_LOGS"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

您可以在logcat命令字符串中添加更多参数。Android开发人员中的更多信息

在实现错误报告功能时,通过向自己发送日志,不要忘记许多应用程序将个人信息输出到logcat中,因此绝对需要有关它们的策略。

我希望这篇文章有用;-)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

应用程序如何从我的缓存目录中读取文件?

应用程序如何在 Documents 文件夹中写入和读取文件?

如何在Lync Silverlight应用程序中读取/写入本地文件?

我应该如何指定要在Rails应用程序的Minitest测试中读取的文件?

如何在我的 Ruby on Rails 应用程序中读取 JS 文件?

如何使dockerized Flask应用程序将输出写入文件?

如何从 UWP 应用程序将文件写入 Hololens

如果 logcat 没有显示原因,我如何找出我的应用程序崩溃的原因?

以编程方式为应用程序读取logcat

Java IO-在其他应用程序写入大文件时读取大文件

在heroku文件系统中写入文件并通过Web应用程序读取

Microsoft Graph应用程序权限-限制对特定文件/文件夹的读取/写入

我可以向自己报告应用程序的logcat文件吗?

我如何从逻辑应用程序读取CloudQueueMessage.DequeueCount

应用程序如何读取我的哈希密码?

如何在Web应用程序中读取属性文件?

如何读取应用程序中包含的数据文件

如何使Shiny应用程序从文件中连续读取?

如何在不将文件保存到我的应用程序的情况下直接将其写入Google云端存储?

为什么我无法从Delphi VCL应用程序读取和写入Amazon S3?

写入应用程序特定文件的位置

从Web应用程序读取和写入客户端文件

非root用户无法读取在Linux上具有文件写入/输出的JAVA应用程序

与主应用程序在同一目录中打开(读取,写入)文件-python / kivy

从客户端* Desktop * Meteor应用程序读取/写入/浏览文件?

当我们在Xamarin.Forms Android应用程序中将Target API版本更改为26时,无法读取/写入文件

如何让我的应用程序创建/下载的文件显示在“文件”应用程序中?

如何从一个文本文件读取然后在一个控制台应用程序中写入另一个文件?

Intellij和sbt:如何使intellij读取我的播放应用程序测试的自定义配置文件?