2012-02-28 22 views
6

javadocでpatternLayoutを調べているうちに、代わりにEnhancedPatternLayoutを使用することが推奨されています。しかし、それはほとんど同じことをするようです。EnhancedPatternLayoutとPatternLayoutの主な違いは何ですか?

主な違いは何ですか、特に私が知っておく必要があるものは何ですか?

元のクラスを強化するのではなく、なぜ別のクラスを作成したのだろうと思います。構文に違いはありますか?

+1

少なくとも1つの大きな違いはタイムゾーンのサポートです。http://stackoverflow.com/questions/1785725/specify-time-zone-of-log4js-dateを参照してください。 – B5A7

答えて

3

documentationを確認してください。すべてが説明されています。 EnhancedPatternLayoutは、PatternLayoutの拡張バージョンです。 PatternLayoutより優先して使用する必要があります(互換性理由を除いてPatternLayout)。

PatternLayoutには、EnhancedPatternLayoutに特に同期していない問題がいくつか含まれています。

+5

私はすでに文書をチェックして何も説明されていないので、私はこの質問を正確に尋ねました。はい、それは強化されています、私はその名前からも見ることができますが、** **どのように強化? – aditsu

+0

これは、EnhancedPatternLayoutには内部的な変更のみが含まれていますが、**同じ方法で**使用されていますか? – aditsu

+1

ほとんどの場合、 'EnhancedPatternLayout'には、PatternLayoutでは利用できない余分な変換文字があります。それ以外の場合は同じように見えます。私はJavaの専門家ではないので、2つのドキュメントページやソースを比較して自分で確認できます。 – cago

0

EnhancedPatternLayoutは結果をStringBufferとしてフォーマットし、PatternLayoutは結果をStringとしてフォーマットします。

0

PatternLayoutEnhancedPatternLayoutの主な違いは、()メソッドの形式です。 patternLayoutは、sbufという名前のメンバフィールドに依存していますが、EnhancedPatternLayoutはStringBufferのプライベートインスタンスを使用します。これは、同時のEnhancedPatternLayout.format()呼び出しが並行していないときに、PatternLayout.format()呼び出しが同時呼び出し中のデータ競争の影響を受けやすいことを意味します。

関連する問題