2012-08-12 154 views
7

我在做一個Java應用程序,它將使用swing用戶界面。它會要求用戶指定一些設置,填寫表單,然後處理它們並在./output/目錄中生成一些文件。在控制檯輸出調試信息

在開發過程中,我想用控制檯輸出一些技術信息,使用System.out.println()方法。

當我完成開發時,是否需要刪除所有這些控制檯輸出?

如果是,在開發過程中顯示調試信息以便在生產之前輕鬆移除它的最佳方式是什麼?

也許我應該只使用JUnit測試用於調試目的?我剛剛開始使用它,所以我對其功能有着模糊的概念。

+2

[Log4J的2](HTTP:/ /logging.apache.org/log4j/2.x/)是爲了幫助你,它提供了許多功能,你可以在這個鏈接中看到:-) – 2012-08-12 16:00:27

+0

在某些情況下,Java日誌記錄可能會更好 – 2012-08-12 20:09:05

+0

@Siorus你能簡單解釋一下嗎?你的意思是'Java日誌記錄'? – 2012-08-12 20:10:01

回答

13

如果你不打算使用一個專門的調試框架可能是那麼容易,因爲:

if (Debugger.isEnabled()) 
    Debugger.log("message here"); 

調試器類只是封裝的println調用(像這樣):

public class Debugger{ 
    public static boolean isEnabled(){ 
     return true; 
    } 

    public static void log(Object o){ 
     System.out.println(o.toString()); 
    } 
} 

通過這種方式,當您想要進入生產環境時,或者您可以通過更改類中的一行來修改調試的行爲(或禁用它)。

+1

謝謝,如你所說,我可能會更好地嘗試一些調試框架。 :) – 2012-08-12 16:25:04

6

小的改進到調試器類來使客戶端稍微清潔器:

public static void log(Object o){ 
    if(Debugger.isEnabled()) { 
     System.out.println(o.toString()); 
    }   
} 

然後客戶端將只需要一個行:

Debugger.log("....") 
+0

在我看來,這不是一個更好的解決方案。通常調試消息字符串需要格式化,即使在禁用調試時也需要CPU時間。在調用'log()'之外檢查調試是否可以保存(無論如何都會發生分支)。或者,你可以有一個包含字符串格式的'log()'方法。 – Yuval 2016-10-14 22:50:46

相關問題