【问题标题】:How to disable the logging of ACRA如何禁用 ACRA 的日志记录
【发布时间】:2014-04-12 23:43:03
【问题描述】:

我在我的应用中使用 ACRA 进行崩溃报告。 (简而言之,ACRA 是一个向开发者发送崩溃报告的工具。)

即使在发布版本中,我也可以在设备的 logcat 中看到它的日志(例如,当它发送崩溃报告时,它会发送许多带有“ACRA”标签的日志行)。

有没有办法禁用它的日志记录?

基于下面的 cmets,让我再次强调:我要求禁用 ACRA 本身的日志记录。这个问题与 ACRA 的崩溃或应用程序崩溃期间的系统 logcat 无关。

我认为最好提供一个例子来说明我的意思:

04-13 02:33:50.980: D/ACRA(4560): Using custom Report Fields
04-13 02:33:51.170: I/ACRA(4560): READ_LOGS not allowed. ACRA will not include LogCat and DropBox data.
04-13 02:33:51.170: D/ACRA(4560): Writing crash report file 1667311131000.stacktrace.
04-13 02:33:51.200: D/ACRA(4560): About to start ReportSenderWorker from #handleException
04-13 02:33:51.200: D/ACRA(4560): Waiting for Toast + worker...

【问题讨论】:

  • 反对者,愿意给我一些指导吗?我的开发人员问题有什么问题?我检查了所有 ACRA 文档,但找不到任何东西。我相信开发人员的合理需求是防止发布版本将其崩溃报告细节暴露给用户。甚至 Google 也建议在已发布的应用程序中禁用您自己应用程序的 logcat 日志记录。
  • @ChrisStratton:你误解了我的意思。这个问题与 ACRA 发送的崩溃报告无关。此外,当 ACRA 崩溃时,它不是关于系统日志(它不会崩溃,它工作正常)。同样:问题是在 logcat 中禁用 ACRA 自己的详细日志记录。
  • 为此,如果您无法从文档中弄清楚,那么我建议您查看 ACRA 源代码并查看这些消息的来源,以及是否有任何方法可以将它们关在那里已经,或者如果您需要添加一个。

标签: java android logging android-logcat acra


【解决方案1】:

要禁用 ACRA 的日志记录,您可能需要使用 ACRALog 接口的此实现:

public class NoAcraLog implements ACRALog {

    @Override
    public int v(String tag, String msg) {
        return 0;
    }

    @Override
    public int v(String tag, String msg, Throwable tr) {
        return 0;
    }

    @Override
    public int d(String tag, String msg) {
        return 0;
    }

    @Override
    public int d(String tag, String msg, Throwable tr) {
        return 0;
    }

    @Override
    public int i(String tag, String msg) {
        return 0;
    }

    @Override
    public int i(String tag, String msg, Throwable tr) {
        return 0;
    }

    @Override
    public int w(String tag, String msg) {
        return 0;
    }

    @Override
    public int w(String tag, String msg, Throwable tr) {
        return 0;
    }

    @Override
    public int w(String tag, Throwable tr) {
        return 0;
    }

    @Override
    public int e(String tag, String msg) {
        return 0;
    }

    @Override
    public int e(String tag, String msg, Throwable tr) {
        return 0;
    }

    @Override
    public String getStackTraceString(Throwable tr) {
        return null;
    }
}

将此类的实例提供给ACRA

ACRA.setLog(new NoAcraLog());

这应该会禁用 ACRA 的所有日志记录,因为上述实现不会执行任何操作。 (仅供参考:通常 ACRA 使用 AndroidLogDelegate 将日志消息重定向到 Log 类。)

【讨论】:

    【解决方案2】:

    关于“启用/禁用系统日志”的部分可能会有所帮助 - https://github.com/ACRA/acra/wiki/AdvancedUsage#enabledisable-system-logs

    【讨论】:

    • 该部分不是处理包括 ACRA 报告中的系统日志吗?我需要的是禁用 ACRA 本身的日志记录。这与其报告本身无关。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-24
    • 2020-01-17
    • 2016-07-04
    • 2021-06-27
    • 2021-10-18
    • 2011-01-08
    • 2014-07-30
    相关资源
    最近更新 更多