2014-02-19 43 views
0

日誌調用我知道,刪除記錄調用使用ProGuard適用於Android應用程序。如何刪除J2SE/J2EE應用程序(而非安卓)

如何能在一個標準的Java應用程序做到這一點?

import java.util.logging.Logger; 

public class Clazz { 

     private static final Logger LOGGER = Logger.getLogger(Clazz.class.getName()); 

     public void foo() { 
      LOGGER.info("bar"); 
     } 

} 
在我的Proguard的配置

我有以下幾點:

-assumenosideeffects class java.util.logging.Logger { *; } 
-whyareyoukeeping class java.util.logging.Logger 

運行時給出了以下的輸出:

[proguard] java.util.logging.Logger 
[proguard] is a library class. 

據我所知,這是一個庫,但我想去除所有無論如何調用它。這可能與Proguard?如果不是,爲什麼?爲什麼這個工程,以便方便地針對Android,做記錄儀領域或缺乏它有一些做這件事?

回答

1

假設您沒有禁用優化,您應該能夠刪除這樣的日誌記錄調用 - 這是優化步驟,可以刪除不必要和不需要的調用。 ProGuard的不能刪除Logger類本身,因爲它是一個運行時庫類,如您所見。

不得使用通配符匹配,雖然這些方法,因爲這包括像等待基本方法()和完成()(影響所有類)。你將不得不枚舉你想要刪除的方法。例如:

-assumenosideeffects class java.util.logging.Logger { 
    void info(java.lang.String); 
} 
+0

感謝。發生了什麼事是我們正在使用擴展org.slf4j.Logger的自定義日誌記錄界面。實際的日誌調用是在該界面上進行的,而不是在Proguard配置中指定的自定義日誌調用。作爲Proguard用戶學到的課程:仔細檢查你的類/接口方法簽名! – tsiren