2014-04-12 218 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類。)