Log4J構成にプロパティファイルでXMLを使用する理由はありますか?
このブログでは両方のメリット について興味深い議論があります。以下のセクションはそのブログからの引用です:
プロパティは、プロパティファイルまたはXMLファイルで定義できます。 Log4jは、log4j.xmlという名前のファイルを探し、次にlog4j.propertiesという名前のファイルを探します。 どちらもsrcフォルダーに配置する必要があります。
プロパティファイルは、XMLファイルほど冗長ではありません。 XMLでは、log4j.dtdもソースフォルダに配置する必要があります。 XMLには、古いJavaバージョンに含まれていない可能性があるdom4j.jarが必要です。
プロパティファイルは、フィルター、カスタムErrorHandler、特別なタイプのアペンダー(AsyncAppenderなど)などの一部の高度な構成オプションをサポートしていません。 ErrorHandlersは、不適切に構成されたアペンダーなど、log4j自体のエラーの処理方法を定義します。フィルターはより興味深いものです。利用可能なフィルターから、レベル範囲フィルターはプロパティファイルには本当に欠けていると思います。
このフィルターにより、a [n]アペンダーがレベルINFOからWARNへのログメッセージを受信するように定義できます。これにより、ログメッセージを異なるログファイルに分割できます。 1つはデバッグメッセージ用、もう1つは警告用、...
プロパティアペンダーは最小レベルのみをサポートします。 INFOを設定すると、WARN、ERROR、FATALメッセージも受信します。
私の元の答えのコメントに対処するには:斜体が私の強調点です。チュートリアルの目的上、著者は、プロパティまたはxmlがsrcフォルダー内にある必要はなく、クラスパス上にのみある必要があることを意図的に省略または省略しました。それらをクラスパスに追加する簡単な方法は、それらをsrcフォルダーに追加することです。そのため、チュートリアルの目的上、明らかに十分であると見なされました。
これは、尋ねられた質問や回答の意図に直接関連するものではありません。これは、xmlファイルを使用してlog4jを構成することのメリットやその他の理由を説明するものです。引用の残りの部分は、情報に基づいた選択をしたいと考えている人に関連していて有用であると思います。
log4jは徐々にXMLに移行しているため、プロパティはレガシー形式です。
一部の新機能はXMLでのみ構成できます。 TimeBasedRollingPolicyを使用する必要があるため、XMlへの切り替えを余儀なくされました。
ただし、XMLは非常に冗長です。できる限りプロパティを使用します。
Perf4j( http://perf4j.codehaus.org )は非常に優れたパフォーマンス監視システムで、log4jと一緒に構成され、それと連動して機能し、log4j.xmlファイルを必要とします。
したがって、perf4jを使用する予定の場合(お勧めします)、xml形式が必要です。
まあ、xml構成でしかできないことの1つは、(org.Apache.log4j.AsyncAppenderを使用して)バッファリングを使用するようにロガーを設定することです。
ただし、より多くの機能が必要な場合は、log4jに対する他の多くの改善点を含むlogbackも確認する必要がある場合があります。