1

私は logstash-logback-encoder:7.0.1 を使用しています

次のように、いくつかの構造化された引数をログに記録しています

        log.info("Get container",
                v(StructuredLoggingFields.TENANT_ID, tenantId),
                v(StructuredLoggingFields.CONTAINER_ID, containerId));

注:そのクラスは装備されています@Log4j2

しかし、ログ ファイルの JSON に引数が表示されない

{
  "app":"Signal Service",
  "ts":"2022-02-02T18:22:21.312Z",
  "level":"INFO",
  "class":"com.tbd.platform.signal.controller.ContainerController",
  "method":"getContainer",
  "caller_file_name":"ContainerController.java",
  "line":153,"thread":"http-nio-8080-exec-2", 
  "msg":"Get container"
}

私のlogback-spring.xmlは次のとおりです

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <contextName>Signal Service</contextName>
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
            <providers>
                <contextName>
                    <fieldName>app</fieldName>
                </contextName>
                <timestamp>
                    <fieldName>ts</fieldName>
                    <timeZone>UTC</timeZone>
                </timestamp>
                <logLevel>
                    <fieldName>level</fieldName>
                </logLevel>
                <callerData>
                    <classFieldName>class</classFieldName>
                    <methodFieldName>method</methodFieldName>
                    <lineFieldName>line</lineFieldName>
                </callerData>
                <threadName>
                    <fieldName>thread</fieldName>
                </threadName>
                <mdc/>
                <arguments>
                    <includeNonStructuredArguments>false</includeNonStructuredArguments>
                </arguments>
                <stackTrace>
                    <fieldName>stack</fieldName>
                </stackTrace>
                <message>
                    <fieldName>msg</fieldName>
                </message>
            </providers>
        </encoder>
    </appender>
    <root level="INFO">
        <appender-ref ref="CONSOLE"/>
    </root>
</configuration>

更新: Spring を使用している場合は適切な出力が表示されますが、Spring の場合は表示されないよう2.5.8です2.5.9

@Log4j2更新 2: に切り替えたときに@Slf4jフィールドが表示されるので、これを log4j ライブラリ更新 2.17.1 まで追跡したようです。

更新 3: これはますますバグ (または少なくとも文書化する必要があるもの) のように見えるため、ここに GitHub の問題として記録しましたhttps://github.com/logfellow/logstash-logback-encoder/issues/754

4

0 に答える 0