2014-03-28 24 views
2

我在SLF4J這個日誌語句(與它下面的logback):使用的DecimalFormat所以他們右對齊

 logger.info("{} has {} depots, {00} vehicles and {} customers with a search space of {}.", ...); 

而且我得到這樣的輸出:

A-n62-k8 has 1 depots, 8 vehicles and 61 customers with a search space of 10^108. 
A-n63-k10 has 1 depots, 10 vehicles and 62 customers with a search space of 10^111. 

但我想這個輸出,增加額外的空間填充/縮進:

A-n62-k8 has 1 depots, 8 vehicles and 61 customers with a search space of 10^108. 
A-n63-k10 has 1 depots, 10 vehicles and 62 customers with a search space of 10^111. 

這可能與SLF4J?

+0

但是,你將如何能夠預測你所提供的變量只有一定的大小?有可能隨着程序在未來的發展,第一個變種可能會有A-n63-k10000。客戶數量可能會變成10000或100萬。因此,要麼保持原樣,要麼發送帶有必要填充的輸入變量(這太費力地放入日誌中,因爲需要花費你的時間和處理來填充每個輸入)。 – bgth

+1

我期待提交某種填充大小。我希望像{## 0.00}這樣的工作。 –

+0

@ dronidze的答案看起來是唯一的解決方案。如果您發現任何答案,請發佈。 – bgth

回答

2

它似乎沒有。你應該爲每個參數使用String.format(...),而這個參數必須帶有額外的空格。像這樣的東西

logger.info("{} has {} depots, {} vehicles and {} customers with a search space of {}.", String.format("%-9s", "A-n62-k8"), "1", String.format("%-2s", "8"), "61", "10^108"); 
+0

同意,但是這比較慢,因爲即使信息記錄未打開,String.format()成本也會出現。 –