【问题标题】:How to add HTTP Headers Logback Logstash如何添加 HTTP 标头 Logback Logstash
【发布时间】:2018-08-21 22:17:33
【问题描述】:

我阅读了以下文档,但无法弄清楚我需要什么其他配置:https://github.com/logstash/logstash-logback-encoder#header-fields

我的配置文件:

    <include resource="org/springframework/boot/logging/logback/defaults.xml" />

    <include resource="org/springframework/boot/logging/logback/console-appender.xml" />

    <property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}}/spring.log}"/>

    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <encoder class="net.logstash.logback.encoder.LogstashEncoder">
            <customFields>{"app_name":"${APP_NAME:-N/A}","app_version":"${APP_VERSION:-N/A}","hostname":"${HOST:-N/A}","environment":"${environment:-${ENVIRONMENT:-N/A}}"}</customFields>
            <includeContext>false</includeContext>
            <timeZone>UTC</timeZone>
       </encoder>

      <encoder class="net.logstash.logback.encoder.LogstashAccessEncoder">
        <fieldNames>
            <requestHeaders>request_headers</requestHeaders>
        </fieldNames>
      </encoder>

        <file>${LOG_FILE}</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${LOG_FILE_ROTATION:-${LOG_FILE}%d{yyyy-MM-dd}.%i}</fileNamePattern>
            <maxHistory>${LOG_FILE_ROTATION_MAX_HISTORY:-1}</maxHistory>
            <totalSizeCap>${LOG_FILE_ROTATION_TOTAL_SIZE_CAP:-3GB}</totalSizeCap>
            <maxFileSize>${LOG_FILE_ROTATION_MAX_FILE_SIZE:-1GB}</maxFileSize>
        </rollingPolicy>
    </appender>

    <root level="${LOG_LEVEL:-INFO}">
        <appender-ref ref="CONSOLE" />
        <appender-ref ref="FILE" />
    </root>

</configuration>

错误:

    java.lang.IllegalStateException: Logback configuration error detected: 
ERROR in ch.qos.logback.core.joran.spi.Interpreter@19:29 - no applicable action for [requestHeaders], current ElementPath  is [[configuration][appender][encoder][fieldNames][requestHeaders]]

【问题讨论】:

    标签: http-headers logstash logback request-headers logstash-logback-encoder


    【解决方案1】:

    您提供的 xml 配置文件似乎是针对 logback-classic 的(因为它包含 &lt;root level=...)。

    logstash-logback-encoder 自动记录请求标头仅适用于通过 logback-access 记录的 IAccessEvents。

    换句话说,请求标头的自动记录可用于通过来自 logback-classic 的 Logger 记录的 ILoggingEvents。但是,您可以在使用 logback-classic 时手动包含它们,如下所述。

    使用 logback-access 记录请求标头

    要记录通过 logback-access 记录的 IAccessEvents 的请求标头,请按照为 tomcat 或 jetty 设置 logback-access 的说明进行操作,并将以下内容添加到您的 logback-access.xml。 (注意这不是 logback-classic 使用的logback.xml 文件)

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <configuration>
        <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
            <encoder class="net.logstash.logback.encoder.LogstashAccessEncoder">
                <fieldNames>
                    <requestHeaders>request_headers</requestHeaders>
                </fieldNames>
            </encoder>
        </appender>
    
        <appender-ref ref="console"/>
    
    </configuration>
    

    此配置已使用 logstash-logback-encoder 5.3 进行了测试。请注意,xml 元素名称在 5.0 之前的 logstash-logback-encoder 版本中是不同的,因此请确保您使用的是 5.0+ 和该配置。

    使用 logback-classic 记录请求标头

    logstash-logback-encoder 不为通过 logback-classic 记录请求标头提供一流的支持。但是,您可以使用event-specific custom fields 将它们包含在通过Logger 记录的日志事件中。

    例如,在可以访问 http 请求的类中(例如 servlet 过滤器),您可以执行以下操作:

    Map<String, String> httpHeadersMap = ...; // get http request headers as a map
    LOGGER.info("request", StructuredArguments.entries(httpHeadersMap));
    

    并像这样在logback.xml 中配置LogbackEncoder

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <configuration>
        <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
            <encoder class="net.logstash.logback.encoder.LogstashEncoder"/>
        </appender>
    
        <root level="info">
            <appender-ref ref="console" />
        </root>
    
    </configuration>
    

    【讨论】:

      猜你喜欢
      • 2017-05-08
      • 1970-01-01
      • 2019-05-11
      • 1970-01-01
      • 2018-07-03
      • 2013-05-15
      • 2014-11-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多