在檢查PatternLayout的javadoc時,我注意到它建議使用EnhancedPatternLayout。但是,它似乎做了幾乎相同的事情。EnhancedPatternLayout和PatternLayout之間的主要區別是什麼?
主要區別是什麼,特別是我需要注意的區別?
我也想知道爲什麼他們做了一個單獨的課程,而不是增強原來的課程。任何語法差異?
在檢查PatternLayout的javadoc時,我注意到它建議使用EnhancedPatternLayout。但是,它似乎做了幾乎相同的事情。EnhancedPatternLayout和PatternLayout之間的主要區別是什麼?
主要區別是什麼,特別是我需要注意的區別?
我也想知道爲什麼他們做了一個單獨的課程,而不是增強原來的課程。任何語法差異?
檢查documentation,一切都解釋清楚。 EnhancedPatternLayout
是PatternLayout
的增強版本。它應該優先使用PatternLayout
(與兼容性原因除外PatternLayout
)。
PatternLayout包含一些在EnhancedPatternLayout中不存在的問題,尤其是在同步時。
我完全問這個問題是因爲我已經檢查過文檔,沒有任何解釋。是的,它是增強型的,我可以從它的名字看到它,但增強了**如何**? – aditsu 2012-02-28 13:09:54
因此,這意味着EnhancedPatternLayout只有內部更改,但它使用**完全相同**。 – aditsu 2012-02-28 13:48:22
幾乎在'EnhancedPatternLayout'中有一些額外的轉換字符,它們在PatternLayout中不可用。否則,它似乎是一樣的。我不是Java專家,因此您可以通過比較兩個文檔頁面和/或來源自行檢查。 – cago 2012-02-29 11:38:43
EnhancedPatternLayout將結果格式化爲StringBuffer,而PatternLayout將結果格式化爲String。
PatternLayout和EnhancedPatternLayout之間的主要區別是format()方法。 PatternLayout依賴於它修改的名爲sbuf
的成員字段,而EnhancedPatternLayout使用StringBuffer的私有實例。這意味着PatternLayout.format()調用在併發調用期間容易受數據競爭影響,而併發EnhancedPatternLayout.format()調用則不受影響。
至少有一個主要區別是支持時區 - 請參閱http://stackoverflow.com/questions/1785725/specify-time-zone-of-log4js-date。 – B5A7 2015-10-19 00:40:01