EnhancedPatternLayout和PatternLayout之间的主要区别是什么?

时间:2012-02-28 12:10:10

标签: java log4j

在检查PatternLayout的javadoc时,我注意到它建议使用EnhancedPatternLayout。但是,它似乎做了几乎相同的事情。

主要区别有哪些,尤其是我需要注意的区别?

我也想知道他们为什么要单独上课而不是增强原班级。任何语法差异?

3 个答案:

答案 0 :(得分:2)

检查documentation,解释了所有内容。 EnhancedPatternLayoutPatternLayout的增强版。它应该优先于PatternLayout使用(与PatternLayout的兼容性原因除外)。

PatternLayout包含一些在EnhancedPatternLayout中不存在的问题,尤其是在同步时。

答案 1 :(得分:2)

PatternLayoutEnhancedPatternLayout之间的主要区别在于format()方法。 PatternLayout依赖于它修改的名为sbuf的成员字段,而EnhancedPatternLayout使用StringBuffer的私有实例。这意味着PatternLayout.format()调用在并发调用期间容易受到数据争用的影响,而并发的EnhancedPatternLayout.format()调用则不会。

答案 2 :(得分:0)

EnhancedPatternLayout将结果格式化为StringBuffer,而PatternLayout将结果格式化为String。