2016-12-01 156 views
1

當我與大項目合作時,我經常在開發分支中使用日誌。但我不想在發佈/主分支中有日誌。當我在做一些卡片時,我根據任務的難度使用10-50個日誌。 需要2-5分鐘才能刪除不同班級中的50個日誌。這與完成任務的時間相比並不是很多,但我想縮短這個時間。Android Studio,從項目中快速刪除所有日誌

比如我的日誌是這樣的:

Log.d(TAG, "Method: constantScrolling"); 

....

Log.d(TAG, "constantScrolling 2609 scrollTimer.cancel"); 

它們都具有相同的開始 - Log.d(TAG

要查找所有日誌刪除我使用這個:在java class Ctrl + F - >插入Log.d(TAG - >按下箭頭鍵 - >在每個日誌上按Ctrl + Y 因此,我快速刪除具有相同開始日誌的所有日誌。 d(TAG

有沒有辦法做得更快?例如,如果有一些相等的字符串要刪除,我可以使用:右鍵單擊應用程序 - >替換路徑.. - >文本查找:Log.d(TAG,「Method:constantScrolling」); - >替換爲:(空) - >查找 因此,在幾秒鐘內,我可以在整個項目中刪除相同的字符串。 也許有一些組合用於刪除具有相同開頭的字符串?

+0

難道你不能在代碼中留下日誌語句,並配置日誌框架不發出調試級日誌?在生產和測試中配置不同日誌記錄參數的能力是幾乎所有日誌記錄框架中的主要功能之一。 – whaleberg

回答

-1

您可以使用ProGuard在構建版本時刪除日誌。只需將以下添加到您的proguard-rules.pro

-assumenosideeffects class android.util.Log { 
    public static boolean isLoggable(java.lang.String, int); 
    public static int v(...); 
    public static int i(...); 
    public static int d(...); 
} 

當您正在爲釋放這將刪除日誌。很顯然,確保你有發佈和關閉調試的步驟。此外,這將使您的錯誤日誌保持在應用程序中,因此您可能想要那些應用程序。

+0

感謝您的建議,但我需要另一件事:我在某個分支中做了一些卡,然後將它合併到常見分支中,通常在dev或release或master分支中,而且我不希望該日誌從某個feature_branch轉到共同的分支。 – LumisD

-1

我會做到這一點:

  1. 右鍵點擊應用
  2. 在路徑替換
  3. 查找: 「Log.d(」(或任何你需要的)
  4. 替換爲: 「」
  5. 查找
+1

它不起作用,因爲只替換刪除日誌的開頭。例如,如果我按照您的要求來完成並替換此「Log.d」,則結果將爲日誌末尾: ,然後替換爲 Log.d(TAG,「Method:constantScrolling」); (標記:「Method:constantScrolling」); 這並不好。這不是刪除日誌,而只是減少它併發生錯誤。 – LumisD

-1

我給了Java當量的事情我已經在C++中完成:

class MyLog { 
    static int d(String t, String m) { return Log.d(t,m); } 
    // static int d(String t, String m) { return 0; } 
    static dx(String t, String m) { return 0; } 

    static int v(String t, String m) { return Log.d(t,m); } 
    // static int v(String t, String m) { return 0; } 
    static vx(String t, String m) { return 0; } 

    ... 
} 

在我的程序我使用:

MyLog.d(TAG, 「消息」);

現在,如果我想完全禁用日誌記錄,那麼我可以轉到MyLog類,只需註釋掉第一個(真實)條目,然後取消註釋虛擬行。如果我想禁用特定條目,則將「.d」更改爲「.dx」,並且日誌條目保留在源中以備日後使用。

相關問題