9

Logback を使用していますが、ユーザー パラメータをログに記録するときに CRLF (キャリッジ リターンとライン フィード) を避ける必要があります。
ClassicConverter を拡張するクラスを静的マップ PatternLayout.defaultConverterMap に追加しようとしましたが、うまくいきませんでした。

ありがとうございました、

4

3 に答える 3

3

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>
于 2016-12-23T13:12:38.743 に答える
0

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");
于 2021-03-23T15:33:43.207 に答える