2010-12-19 9 views
1

Log4J XMLLayoutを使用して、各ログイベント(ログライン)内にタグで囲まれた一連のフィールドを入れたいと思います。 <X>いくつかの情報</X > < yの>詳細</yの>Log4j XMLLayoutで各行のXML構造化データを取得するにはどうすればよいですか?

これは、XMLロガーのコンテキストで、より構造化されたログを実現する自然な方法です。これを行うための標準的な方法はありますか、またはこれらのタグを使って文字列を自分で構築する必要がありますか?

また、特定のフィールドをラップするXMLタグでPatternLayoutを使用することもできます。私は自分自身でXMLをエスケープする必要があり、XMLLayoutはXMLに使用する必要があります。

もう1つの問題は、XMLLayoutがログラインをCDATAブロックに置くことです。これはもちろん、行内のXMLがXMLとして解析できないことを意味します。

答えて

1

このための機能は組み込まれていないようです。

私はこれを行うことをお勧めします:あなたは既にlog4jを持っているので、あなたはソースコードを持っています。

ファイルorg.apache.log4j.xml.XMLLayoutを探します。それをコピーし、パッケージ名をあなたのアプリケーションに合うものに変更してください。適切な場所にこのファイルがありません。このファイルは問題ありません。log4jの設定ファイルで新しいファイルを使用してください。レイアウト。

0

私はちょうど

logger.info("]]>"+xmlMsg+"<![CDATA["); 

これは怠惰な方法ですが、すべてではないが、私のログメッセージが残っていなかったものをそうXMLあったように、それは私のために働いを使用し、出力するXMLデータへのlog4j XMLLayoutを使用していましたエスケープ。

関連する問題