2012-08-22 45 views
4

我正在計劃簽署apk併發布它(通過導出Eclipse工具)。然後將其上傳到市場。我知道debuggable在簽名時默認設置爲false,這意味着沒有日誌將被捕獲。同時,如果我將debuggable設置爲true並釋放apk,那麼我將獲得所有日誌。Android:使應用程序只記錄我的日誌語句「

我真正感興趣的是最後一條僅由我添加的調試語句。目前,我正在使用Log.i語句來添加信息日誌。有沒有辦法讓我的應用程序只記錄信息日誌(即只有我的日誌)。 Mybe如果我禁用日誌,並有system.out.print它會工作?

我這樣做的原因是因爲我想發送崩潰發生時的最後100行日誌,我只對我的日誌狀態感興趣。

請幫我 感謝

+0

我覺得[這個答案](http://stackoverflow.com/questions/5553146/disable-logcat -output-completely-in-release-android-app)是t他最接近你會得到。 – Eric

回答

1

我相信你需要做的是利用ACRA內置的過濾功能:

In the Advanced Usage wiki你可以看到,你可以在你的配置設置你的logcat的論點。

在你的記錄,與特定的標籤和調試級別標記您的自定義日誌信息,然後在logcat的參數,然後設置一個參數:

logcatArguments = { "-t", "100", "-v", "long", "ActivityManager:I", "MyApp:D", "*:S" } 

添加一個在

"YourCustomTag:<YOUR_DEBUG_LEVEL>" 
形式

拿出你不想登錄的人(可能是MyApp:D在這種情況下)。

+0

是的,當你做過濾時,會發生什麼事情ACRA將採用系統日誌的最後100行,根據您的TAG過濾它,並向您發送過濾版本(最終爲10-20行)。我需要使用1000的參數來完成我想要的功能,但ACRA表示不要那樣做,因爲它太多了。我問過這個問題,但它在stackoverflow.com/questions/11946581/...我仍然沒有得到一個asynit – Snake

+0

啊,我明白你在說什麼。說實話,最好的解決方案可能是離開acra並使用自己的錯誤日誌記錄:沿着這個答案的行:http://stackoverflow.com/a/755151/1359772 –

1

你將不得不把包裝上的日誌的頂部,你可以把功能來控制日誌級別。

+0

這將如何工作?如果我理解正確,那不涉及修改Android源代碼?因爲如果'Log'被封裝在應用程序本身中,其他應用程序(和操作系統)仍然會使用Android系統的'Log',它被解開。 – Eric

+0

再次閱讀您的問題,並瞭解您希望在崩潰時捕獲應用程序的狀態。爲此,您可以創建自定義記錄器,將其寫入可以上傳到服務器的文件。自定義記錄器將使您可以完全控制要捕獲的日誌的大小和日誌級別。希望這會回答你的問題。 –

+0

嗯。這實際上是有道理的(順便說一句,我是誰發佈的問題:))。我喜歡你的建議,唯一的問題是我使用ACRA向我發送日誌。我怎樣才能使用它來發送customzied日誌文件?否則,我將不得不寫我自己的代碼發送它變得太多 – Snake

1

這種類型的功能已經由ACRA Android庫實現。該庫檢測崩潰,並將崩潰信息發送到Google文檔電子表格或您自己的目的地。您可以使用here所示的方法添加附加信息,如過去的100行日誌。

+0

是的,我使用ACRA給我發送最後100行。問題是100行由所有系統日誌組成。我需要「我的日誌」的最後100行,這在ACRA – Snake

+0

中不是功能。您可以使用第二個鏈接中的logcat參數將日誌過濾到只有您的進程ID或者只有一個TAG。這樣,只有您的應用程序消息會來 –

+0

是的,當您進行過濾時,ACRA將採取最後100行系統日誌,根據您的TAG對其進行過濾,並向您發送過濾版本(最終爲10- 20行)。我需要使用1000的參數來完成我想要的功能,但ACRA表示不要那樣做,因爲它太多了。我已經問過這個問題了,但它在http://stackoverflow.com/questions/11946581/logcat-filtering-and-number-of-lines,我仍然沒有得到一個asnwer – Snake

相關問題