Logback を使用していますが、ユーザー パラメータをログに記録するときに CRLF (キャリッジ リターンとライン フィード) を避ける必要があります。
ClassicConverter を拡張するクラスを静的マップ PatternLayout.defaultConverterMap に追加しようとしましたが、うまくいきませんでした。
ありがとうございました、
Logback を使用していますが、ユーザー パラメータをログに記録するときに CRLF (キャリッジ リターンとライン フィード) を避ける必要があります。
ClassicConverter を拡張するクラスを静的マップ PatternLayout.defaultConverterMap に追加しようとしましたが、うまくいきませんでした。
ありがとうございました、
logback のドキュメントで説明されているように、カスタム レイアウトを作成する必要があります。
カスタム レイアウト:
package com.foo.bar;
import ch.qos.logback.classic.PatternLayout;
import ch.qos.logback.classic.spi.ILoggingEvent;
public class RemoveCRLFLayout extends PatternLayout {
@Override
public String doLayout(ILoggingEvent event) {
return super.doLayout(event).replaceAll("(\\r|\\n)", "");
}
}
ログバック構成:
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="com.foo.bar.RemoveCRLFLayout">
<pattern>%d %t %-5p %logger{16} - %m%n</pattern>
</layout>
</encoder>
ch.qos.logback.core.CoreConstants
;
public static final String LINE_SEPARATOR = System.getProperty("line.separator");
ch.qos.logback.classic.pattern.LineSeparatorConverter
:
public String convert(ILoggingEvent event) {
return CoreConstants.LINE_SEPARATOR;
}
package ch.qos.logback.classic.PatternLayout
:
defaultConverterMap.put("n", LineSeparatorConverter.class.getName());
したがって、固定行の終わりを確実にする適切な方法は、プロパティline.separator
です。
同じ実装は次のjava.lang.System.lineSeparator()
とおりです。
lineSeparator = props.getProperty("line.separator");