当前位置: 首页 > 知识库问答 >
问题:

Android logcat:使用电子邮件从设备发送日志条目

壤驷高旻
2023-03-14

我已经向几个朋友发布了Android应用的测试版。现在,我想修复测试期间出现的一些错误。

我设置了一个第三方崩溃报告工具,所以我可以轻松处理应用程序崩溃。然而,有一些错误的行为并没有导致崩溃。在这些情况下,我会检查应用程序日志,看看哪里出错了。

应用程序有办法通过电子邮件发送其logcat条目吗?

  • 有许多日志应用程序(android日志收集器、日志查看器(logcat))可以检查和显示logcat条目。但是,自Android 4.1以来,这些应用无法访问其他应用的日志。
  • 我不介意在设备中占用大量空间——这个功能只适用于beta测试人员
  • 解决方案应在没有root或任何其他特殊权限的情况下工作

共有3个答案

国跃
2023-03-14

可以使用Timber、Android-Logback等日志库来登录文件。然后用电子邮件发送它。然后你会有你的日志历史,这将有助于你找到错误。

使用android logback,这是一个android日志框架。使用基于时间和文件大小的滚动策略登录到特定位置的文件,这意味着每小时或当文件大小超过限制时,将创建一个新的日志文件。您还可以定义日志的到期日期和最大总大小。如果日志日期过期或超过最大总文件数,日志将被删除。还将logcat绑定到我创建的android日志记录器。然后在回收视图中向用户显示日志列表,然后在用户选择特定日志时将其发送,因为日志是以日期命名的。

如果您为您的产品版本添加文件存储策略、文件共享策略和要存储的文件路径,请务必小心。

你可以在我下面的视频中看到我是如何实现和逻辑的。https://www.youtube.com/watch?v=0Evjd5c_x5E

您只需检查实现并从以下 github 链接中复制名为文件记录器的 android 库 https://github.com/b-basoglu/simpleproject/tree/video2-file-logging

田镜
2023-03-14

听起来RemoteLogger正是您所需要的

https://github.com/sschendel/RemoteLogger

将调试日志记录捕获到用户可以轻松地通过电子邮件发送给您的文件中。这是出于对用户报告的不可重现的错误进行故障排除的需要而创建的。需要明确的是,日志记录已放入发布的应用程序版本中,以测试用户进行故障排除。在最终生产代码中删除。

库提供了启动、停止、发送和删除日志文件的挂钩。

宫弘亮
2023-03-14

在 onDestroy 中调用此方法 销毁您的主要活动。

 public void SendLogcatMail(){

    // save logcat in file
    File outputFile = new File(Environment.getExternalStorageDirectory(),
            "logcat.txt");
    try {
        Runtime.getRuntime().exec(
                "logcat -f " + outputFile.getAbsolutePath());
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

 //send file using email
 Intent emailIntent = new Intent(Intent.ACTION_SEND);
 // Set type to "email"
 emailIntent.setType("vnd.android.cursor.dir/email");
 String to[] = {"yourmail@gmail.com"};
 emailIntent .putExtra(Intent.EXTRA_EMAIL, to);
 // the attachment
 emailIntent .putExtra(Intent.EXTRA_STREAM, outputFile.getAbsolutePath());
 // the mail subject
 emailIntent .putExtra(Intent.EXTRA_SUBJECT, "Subject");
 startActivity(Intent.createChooser(emailIntent , "Send email..."));
 }
 类似资料:
  • 我们已将电子邮件服务从Mandrill更改为Amazon SES。我们将它与SMTP一起使用。 在Mandrill中,我们可以访问一些详细信息,例如: 邮件的原始内容 交货日期 是收件人查看的邮件 是否点击了邮件中的链接 但是在

  • 问题内容: 如何使用curl命令行程序从gmail帐户发送电子邮件? 我尝试了以下方法: 使用file.txt作为电子邮件的内容,但是,当我运行此命令时,出现以下错误: 是否可以从仍由curl托管的个人服务器托管帐户发送电子邮件?这样会使身份验证过程更容易吗? 问题答案: curl –url 'smtps://smtp.gmail.com:465’ –ssl-reqd \ –mail-from '

  • 问题内容: 我正在尝试使用Java发送电子邮件: 我收到错误消息: 此代码可以发送电子邮件吗? 问题答案: 户名+密码不再是推荐的解决方案。这是因为 我尝试了此操作,Gmail向该代码中用作用户名的电子邮件发送了一封电子邮件,其中说我们最近阻止了你的Google帐户的登录尝试,并将我定向到此支持页面:support.google.com/accounts/answer/6010255因此它看起来很

  • 问题内容: 这有点令人困惑,所以请在这里忍受… 我想建立一个系统,使用户可以通过我的网站发送模板化的电子邮件,但实际上并没有使用我的服务器发送它- 它只是打开自己的本地邮件客户端,并准备发送电子邮件。该应用程序将使用预定义的变量填充电子邮件的正文,以节省用户必须自己键入的电子邮件。然后,如果该消息不完全适合其目的,则他们可以根据需要编辑该消息。 我有很多理由希望它通过用户的本地邮件客户端,因此让服

  • 它显示以下错误: JasperException:处理JSP页面/assignment3/send_email.JSP第132 129行时发生异常:Message Message=new MimeMessage(session1);130:131://Set FROM:header标头字段。132:message.setFrom(新InternetAddress(from));133:134://

  • 问题内容: 我正在尝试从PHP发送简单的HTML电子邮件。下面的代码仅导致GMail中的空白电子邮件。它还有一个名为“ noname”的空附件,这根本不是我想要的;尽管那可能只是它无法正常工作的症状。 我使用的代码是: 问题答案: 原来关键是编码类型。代替: 我需要使用: 它可能取决于您如何在自己的文本编辑器中保存PHP文件的细节。我没有研究它,但是PHP中的 iconv 函数可能也给我带来了一些