2012-02-28 218 views
6

在檢查PatternLayout的javadoc時,我注意到它建議使用EnhancedPatternLayout。但是,它似乎做了幾乎相同的事情。EnhancedPatternLayout和PatternLayout之間的主要區別是什麼?

主要區別是什麼,特別是我需要注意的區別?

我也想知道爲什麼他們做了一個單獨的課程,而不是增強原來的課程。任何語法差異?

+1

至少有一個主要區別是支持時區 - 請參閱http://stackoverflow.com/questions/1785725/specify-time-zone-of-log4js-date。 – B5A7 2015-10-19 00:40:01

回答

3

檢查documentation,一切都解釋清楚。 EnhancedPatternLayoutPatternLayout的增強版本。它應該優先使用PatternLayout(與兼容性原因除外PatternLayout)。

PatternLayout包含一些在EnhancedPatternLayout中不存在的問題,尤其是在同步時。

+5

我完全問這個問題是因爲我已經檢查過文檔,沒有任何解釋。是的,它是增強型的,我可以從它的名字看到它,但增強了**如何**? – aditsu 2012-02-28 13:09:54

+0

因此,這意味着EnhancedPatternLayout只有內部更改,但它使用**完全相同**。 – aditsu 2012-02-28 13:48:22

+1

幾乎在'EnhancedPatternLayout'中有一些額外的轉換字符,它們在PatternLayout中不可用。否則,它似乎是一樣的。我不是Java專家,因此您可以通過比較兩個文檔頁面和/或來源自行檢查。 – cago 2012-02-29 11:38:43

0

EnhancedPatternLayout將結果格式化爲StringBuffer,而PatternLayout將結果格式化爲String。

0

PatternLayoutEnhancedPatternLayout之間的主要區別是format()方法。 PatternLayout依賴於它修改的名爲sbuf的成員字段,而EnhancedPatternLayout使用StringBuffer的私有實例。這意味着PatternLayout.format()調用在併發調用期間容易受數據競爭影響,而併發EnhancedPatternLayout.format()調用則不受影響。

相關問題