質問: お世話になります。 log4jでログを出力しています。 出力中の任意の場所で、空白行を挿入したいのですが、 良策をご存知の方がいましたら、ご教授願います。 現在はlog4j.propertiesにてレイアウト定義しており、 %p,%d,%m,%Cパラメータを使用しています。 出力元で空文字などを出力しても、%p,%d,%Cが 出力されるので、空白行にならず、困っています。 最悪、パラメータは%mのみとし、通常の出力は "[INFO] yyyy.mm.dd メッセージ class"とし、 空白行時は ""とする方法しか思いつかないのですが、 利便性が低下するので、他に方法が無いものかと思い、 投稿致しました。 よろしくお願いいたします。 ※空白行挿入の理由は、視認性向上のためです。
回答: 実際出力を行いクラスを継承した自作クラスを作って log4jのappenderを自作のクラスに指定することで 何とか対応できました。 (その時、こちらの方々に助けて貰いました。感謝感謝) その時の作業を簡単に説明すると、 コンソール出力では、 1. org.apache.log4j.ConsoleAppenderを継承した自作クラスを作ります。 2. 自作クラスからWritwAppenderのsubAppendメソッドをオーバーライドします。 このメソッドでログの書き込みを行いますので、 ここで空の場合は、改行するようにします。 このようにすればいいかと思います。 public void subAppend(LoggingEvent event) { // 出力メッセージ String msg = (String) event.getMessage(); // メッセージが空なら改行出力 if (msg != null && msg.equals("")) { qw.write("\r\n"); // 改行以外は親任せ } else { super.subAppend(event); } } ファイル出力も同じです。継承するAppenderクラス(多分RollingFileAppenderでしょう)が 違うだけで、メソッドは一緒ですので、同じくオーバーライドすればいいです。