たとえば、メッセージを次々に記録する XML ログを生成しようとしています。
<?xml version="1.0" encoding="UTF-8"?>
<log>
<message>Message 1</message>
<message>Message 2</message>
//Next messages to append here
</log>
さまざまなソリューションを見てきましたが、必要に応じて機能するものはないようです。私が最も近いのは、次を使用することです: http://www.vogella.com/tutorials/Logging/article.html
私はそれを自分のニーズに合わせて調整しました。
public String format(LogRecord rec) {
StringBuffer buf = new StringBuffer(1000);
buf.append('\n');
buf.append(formatMessage(rec));
buf.append('\n')
return buf.toString() ;
}
public String getHead(Handler h) {
return "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<log>";
}
public String getTail(Handler h) {
return "</log>";
}
これに関する問題は、私の FileHandler が閉じられるまで getTail が呼び出されないため、閉じられたときにのみ有効になることです。
私はそれを閉じて、次のメッセージのために append = true で FileHandler を再度開いてみましたが、これは (当然のことながら) ログの最後に追加されます。例えば
<?xml version="1.0" encoding="UTF-8"?>
<log>
<message>Message 1</message>
</log>
<?xml version="1.0" encoding="UTF-8"?>
<log>
<message>Message 2</message>
</log>
これは本当にシンプルであるべきだと感じます...