Android中如何将日志写入SD卡? [复制]

2024-03-06

我的程序在设备中崩溃。我想在我的设备中运行时准确捕获程序的日志。即我想将日志写入我的 SD 卡,直到崩溃为止。我怎样才能实现这个目标?


尝试这个

Thread.setDefaultUncaughtExceptionHandler(new ExceptionHandler(this)); // add this to your activity page

public class ExceptionHandler implements
        java.lang.Thread.UncaughtExceptionHandler {
    private final Context myContext;
    private final String LINE_SEPARATOR = "\n";
    UncaughtExceptionHandler defaultUEH;

    public ExceptionHandler(Context con) {
        myContext = con;
        defaultUEH = Thread.getDefaultUncaughtExceptionHandler();
    }

    @SuppressWarnings("deprecation")
    public void uncaughtException(Thread thread, Throwable exception) {

        StringWriter stackTrace = new StringWriter();
        exception.printStackTrace(new PrintWriter(stackTrace));
        StringBuilder errorReport = new StringBuilder();
        errorReport.append("************ CAUSE OF ERROR ************\n\n");
        errorReport.append(stackTrace.toString());

        errorReport.append("\n************ DEVICE INFORMATION ***********\n");
        errorReport.append("Brand: ");
        errorReport.append(Build.BRAND);
        errorReport.append(LINE_SEPARATOR);
        errorReport.append("Device: ");
        errorReport.append(Build.DEVICE);
        errorReport.append(LINE_SEPARATOR);
        errorReport.append("Model: ");
        errorReport.append(Build.MODEL);
        errorReport.append(LINE_SEPARATOR);

        File root = android.os.Environment.getExternalStorageDirectory();
        String currentDateTimeString = DateFormat.getDateTimeInstance().format(
                new Date());

        File dir = new File(root.getAbsolutePath() + "/dir_name/log");
        if (!dir.exists()) {
            dir.mkdirs();
        }

        File file = new File(dir, "log.txt");

        try {
            BufferedWriter buf = new BufferedWriter(new FileWriter(file, true));
            buf.append(currentDateTimeString + ":" + errorReport.toString());
            buf.newLine();
            buf.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

        defaultUEH.uncaughtException(thread, exception);
        System.exit(0);
    }

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android中如何将日志写入SD卡? [复制] 的相关文章

随机推荐

  • 在 Java 中将“\\”替换为“/”

    我正在尝试更换 with 在java Android 中 这似乎不起作用 String rawPath filePath replace 这有什么问题吗 我已经转义了 并尝试转义 但没有用 原始字符串没有任何变化 filePath abc
  • Oracle 正则表达式 - 不以以下开头且不以以下结尾

    以下 Oracle 正则表达式不起作用 我不知道为什么 不以 开头abc abc 不以 结尾abc abc 问题在于 Oracle 正则表达式引擎似乎无法将 abc 字符串识别为一个单元 而只是单独查看字母 括号 应该创建一个字符串单元 所
  • SwiftUI - 动态文本的本地化

    我正在努力解决一些文本字段的本地化问题 通常 如果我要翻译的文本是硬编码的 则 Text 或 TextField 的 正常 本地化在我的应用程序中不会出现任何问题 Text English Text 我将其翻译到我的 Localized s
  • 如何在 React Native 中将一个图像放置在其他图像之上?

    我将图像放置为根节点 以便使其成为视图的背景 但似乎所有其他图像都变得不可见 有没有办法使用内置组件将图像放置在背景之上 而不需要任何插件 在下面的代码示例中landing background用作背景 我的logo图像可见 但仅当背景被移
  • 无法使用 urllib2 将内容类型设置为 application/json

    这个小宝贝 import urllib2 import simplejson as json opener urllib2 build opener opener addheaders append Content Type applica
  • NSTableView 未显示

    这是上一个问题的后续 对不起 我不知道如何添加代码或编辑 5 分钟前编写的内容 一个简短的总结 我正在尝试在常规视图上显示自定义 派生的 TableView 我没有使用IB 而是从代码中完成一切 这里的目标是构建应用程序 同时也是学习 Co
  • FileProvider 崩溃 - npe 尝试对 null 字符串调用 XmlResourceParser

    这是我的清单的一部分
  • 如何扩展现有的docker镜像?

    我在用着官方的elasticsearch Docker 镜像 https hub docker com r elasticsearch 而不是设置我自己的弹性搜索实例 这非常有效 直到我想扩展它为止 我想安装marvel http www
  • VBScript 发送键“

    我有一个 VBScript 可以取消订阅所有 Steam 创意工坊对象 Code Set WshShell WScript CreateObject WScript Shell WshShell AppActivate Steam Comm
  • 如何选择 cypress 自动完成字段

    我如何在 cypress 中选择自动完成字段 该字段如下所示 这是 HTML 代码 div class mui select span style color rgb 51 51 51 font family none font size
  • 有没有更好的方法使用 Dash by Plotly 执行多重输出?

    正如我们所看到的入门的互动部分 https plot ly dash getting started part 2 interactivity 一个回调函数可以接受多个输入 但始终只有一个输出 假设我们有两个单独的块 它们必须在输入更改后更
  • 数组“__curl_rule_01__”的大小为负数

    我在尝试编译 GIT 时遇到错误 我已经在 Google 和 GIT 源代码问题 错误中搜索了类似的问题 但没有找到任何可以帮助我的内容 最初我收到以下错误 root teemo usr src git make prefix usr in
  • 使用 Swift 3.0 将 JSON 数组解析到服务器

    我正在尝试将 JSON 数组发送到 Web 服务器 我在网上看了几个例子 即 and 使用 Swift 3 0 将 CoreData 保存到 Web 服务器 https stackoverflow com questions 4619996
  • 使用前缀或域的路由

    我正在开发一个平台 该平台允许用户在主网站域的子文件夹中运行自己的网站 或者为其网站映射自定义域 使用自定义域时 每个路由的 URL 结构略有不同 因为它以用户名为前缀 但使用自定义域时 不使用此前缀 有没有一种巧妙的方法可以在我的 Rou
  • 通过递归得出帕斯卡三角形

    有人可以告诉我我当前的代码是否可行吗 我必须使用输入创建帕斯卡三角形 而不使用任何循环 我注定要递归 我花了三天时间来做这个 这是我能想到的最好的输出 def pascal curlvl newlvl tri if curlvl newlv
  • R 中向量的子集()

    我根据以下函数编写了subset 我觉得很方便 ss lt function x subset r lt eval substitute subset data frame x parent frame if is logical r st
  • 将 JSON 解析为 MONGODB 文档

    我是新来的JAVA and MONGODB并且一直在学习尝试并了解这些技术是否能够满足我对产品的要求 我目前陷入无法插入文档 记录 的地步JAVA进入我的MONGODB收藏 我正在使用新的MONGODB version 3 0 到目前为止的
  • 如何在heroku 上托管我的discord.py 机器人?

    我目前正在尝试将我的 Discord 机器人连接到 Heroku 并 24 7 托管它 但我遇到了问题 我将我的机器人上传到 githubhttps github com zemocode flankebot tree master htt
  • 如何更改 .net Web 应用程序中的默认区域性设置?

    我们的 Web 应用程序 net C 使用 amount ToString c 格式化货币金额 显示为几个不同区域的本地化 我们的法裔加拿大用户更喜欢所有金额均采用美国格式 123 456 99 而 fr CA 的默认 Windows 格式
  • Android中如何将日志写入SD卡? [复制]

    这个问题在这里已经有答案了 我的程序在设备中崩溃 我想在我的设备中运行时准确捕获程序的日志 即我想将日志写入我的 SD 卡 直到崩溃为止 我怎样才能实现这个目标 尝试这个 Thread setDefaultUncaughtException