2014-04-12 168 views
1

我在我的应用程序中使用ACRA进行崩溃报告。 (简而言之,ACRA是向开发人员发送崩溃报告的工具。)如何禁用ACRA的日志记录

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

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

基于下面的评论,让我再次强调:我要求禁用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... 
+0

Downvoter,小心给我提供一些指导?我的开发人员问题有什么问题?我查看了所有ACRA文档,但找不到任何东西。我相信开发人员的合法需求是防止发布版本向用户公布其崩溃报告细节。即使Google建议应该在已发布的应用程序中禁用自己应用程序的logcat日志记录。 –

+0

@ChrisStratton:你误解了我。这个问题与ACRA发送的崩溃报告无关。另外,当ACRA崩溃时它不会关于系统日志(它不会崩溃,它工作正常)。再一次:问题是禁用ACRA自己在logcat中的详细日志记录。 –

+0

为此,如果您无法从文档中找出它,那么我建议您查看ACRA源代码,看看这些消息来自哪里,以及是否有任何方法将它们放在那里,或者如果您需要添加一个。 –

回答

3

要禁用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的所有日志记录,因为上述实现无能为力。 (FYI:通常ACRA使用AndroidLogDelegate将日志消息重定向到Log类。)