【问题标题】:How to capture App logs in a text file in Android?如何在 Android 的文本文件中捕获应用程序日志?
【发布时间】:2021-04-19 12:04:28
【问题描述】:

对于一些与用户体验相关的内容,我想仅捕获我的应用程序(而不是整个 logcat)的日志并将它们保存在文本文件中。我在我的应用程序中使用 Kotlin,它支持最新版本的 android。

我为此检查了许多关于 SO 的解决方案和答案,但其中许多是为旧版本的 Android 编写的,并且无法读取系统日志,因为 android.permission.READ_LOGS 仅授予系统应用程序.

Saving Logcat to a text file in Android Device

Android Writing Logs to text File

我还检查了一些库,但它们不适用于最新版本的 android。其中之一是https://github.com/hypertrack/hyperlog-android#initialize

另外,从用户设备中捕获我们自己的应用程序日志是否违反了 Play 商店的政策,或者我们可以安全地做到这一点?

【问题讨论】:

  • does capturing our own App's logs from user's device violates Play store's policies这个我们无法回答
  • 如果要捕获代码生成的日志,可以使用日志库而不是默认的Log.i 等。这将允许您在调试时将日志写入 logcat 并写入文件发布。这可能会有所帮助:medium.com/android-news/my-timber-setup-493a8ec7a10c

标签: android logcat


【解决方案1】:

据我所知,实际上可以在没有android.permission.READ_LOGS 许可的情况下从logcat 获取日志。以下片段在现代 Android 设备上为我工作。免责声明:这又快又脏;日志被写入任意外部位置。因此,如果你走同样的路,你需要android.permission.WRITE_EXTERNAL_STORAGE

    try {
        val filename = File(getExternalFilesDirs(null)[0]!!, "log.txt")
        val cmd = "logcat -r 100 -f " + filename.getAbsolutePath() + " ActivityManager:I MyAwesomeApp:V"
        filename.createNewFile()
        Runtime.getRuntime().exec(cmd)
    } catch (e: IOException) {
        e.printStackTrace()
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-13
    • 1970-01-01
    • 1970-01-01
    • 2017-08-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多