0

これは私のlogback.spring.xmlです

<encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
            <providers>
                
                <arguments/>
               
                <stackTrace/>
               
                <mdc>
                    <excludeMdcKeyName>ClaimNo</excludeMdcKeyName>
                    <excludeMdcKeyName>ClaimId</excludeMdcKeyName>
                </mdc>
                <pattern>
                    <pattern>
                        {
                        "Claim": "[${logback.company}, ${logback.info}]",  // YML file value 
                        "Log level": "${logback.level}",    // YML value 
                        "Time": "%date",
                        "Thread ID": "%thread",
                        "claimId":"[%X{claimId}]",   //MDC key 
                        "Claim no": "[%X{CliamNo}]", // MDC Key
                        "Logger": "%logger",
                        "Message": "%msg"
                        }
                    </pattern>
                </pattern>
            </providers>
            <jsonFactoryDecorator class="net.logstash.logback.decorate.CharacterEscapesJsonFactoryDecorator">
                <escape>
                    <targetCharacterCode>9</targetCharacterCode> <!-- Tab-->
                    <escapeSequence></escapeSequence>
                </escape>
                <escape>
                    <targetCharacterCode>10</targetCharacterCode>  <!-- New Line-->
                    <escapeSequence></escapeSequence>
                </escape>
            </jsonFactoryDecorator>
        </encoder>

私は同じエンコードパターンで別のアペンダーを使用しているため、パターンを再利用するために、以下のようにプログラムで追加しようとしていますが、ここではパターン、MDC 値、および CharacterEscapesJsonFactoryDe​​corator をクラスレベルから渡す方法がわかりません。これについて私を助けてください。

public class JsonEncoder extends LoggingEventCompositeJsonEncoder {
    public JsonEncoder() {
    }
    @Override
    public void start() {
       

        List<String> mdcList = new ArrayList<String>();
        mdcList.add("ClaimNo");
        mdcList.add("CliamId");
        MdcJsonProvider mdcJsonProvider= new MdcJsonProvider();
        mdcJsonProvider.setExcludeMdcKeyNames(mdcList);

        JsonProviders<ILoggingEvent> providers = getProviders();
        providers.addProvider(mdcJsonProvider);
        
        super.start();
    }
}

Logback.spring.xml

<encoder class="com.solution.JsonEncoder"></encoder>
4

1 に答える 1