2016-01-06 84 views
1

對於一個快速和非常簡單的調試我在Java中使用方法來打印參數安慰並且原樣返回

System.out.println(String.format("%s/%s", a, b)); 

它工作正常,但在情況下,當我很快就需要看看什麼東西被傳遞到其他一些方法。然後,我需要臨時變量:

String temp = String.format("%s/%s", a, b); 
System.out.println(temp); 
act(temp); 

我不知道是否有任何方便的功能類似下面trace,我可以靜態從任何流行的庫導入?

act(trace(String.format("%s/%s", a, b))); 

這將等同於了XQuery trace - 只是打印到System.out內容和返回參數不變。

當然,我可以爲此創建自己的util,但是我每天都在處理多個項目,也許已經有一些可以使用的東西了?

我知道我可以在這裏使用更復雜的方法,但正如我所說的,我需要它只是爲了不時地進行骯髒的調試。應該很容易添加和刪除。

+0

對於是否適合調試System.out,你可能會得到不同的意見。(例如,它只是一個柺杖,使用適當的單元測試;它不應該存在於生產代碼中;它非常適合調試等等)。然而,我不知道任何「內置」的東西都是你想要的。也許創建一個調試幫手庫並在整個項目中引用它。 –

+0

@Cᴏʀʏ我知道'System.out'對於調試來說是不好的選擇,但是我經常這樣做,尤其是當我想看到來自多個調用的結果時。當然''System.out'幾乎不會存在於生產代碼中。 –

+0

你應該用System.out.printf(「%s /%s%n」,a,b)替換'System.out.println(String.format(「%s /%s」,a,b))' )' – Andreas

回答

1

對於類似的情況,您應該使用日誌庫(Java built-in library)或第三方庫(如log4jlogback)。

然後,您需要的是將跟蹤級別的日誌記錄調用添加爲要監視的每種方法中的第一條語句。常見的日誌消息可能類似於Entering myMethod(4, 2),其中42是實際參數值。

通過這種方式,您可以使用配置啓用/禁用日誌詳細信息級別,而不必更新/編譯/打包/安裝代碼。