You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot使用logstash-logback提取request_headers生成自定义JSON访问日志

实现请求头字段提取的配置方法

你当前使用的AccessEventCompositeJsonEncoder本身内置了从请求头中取值的能力,不需要开发自定义转换器,直接通过内置的占位符就可以提取Referer和User-Agent字段的取值,和你之前获取响应码的逻辑属于同一套占位符体系。

核心配置方式

在你现有的JSON字段定义块中,补充两个对应请求头的占位符即可:

  • 提取referer字段:使用%requestHeader{Referer}占位符,直接读取请求头中的Referer值
  • 提取user_agent字段:使用%requestHeader{User-Agent}占位符,直接读取请求头中的User-Agent值

可直接参考的完整配置片段:

<encoder class="net.logstash.logback.encoder.AccessEventCompositeJsonEncoder">
  <providers>
    <pattern>
      <pattern>
        {
          "_type": "access",
          "_timestamp": "%date{yyyy-MM-dd HH:mm:ss.SSS}",
          "_url": "%requestURL",
          "_method": "%requestMethod",
          "_response_code": "%statsCode",
          "_processing_time_in_ms": "%D",
          "_level": "info",
          "referer": "%requestHeader{Referer}",
          "user_agent": "%requestHeader{User-Agent}"
        }
      </pattern>
    </pattern>
  </providers>
</encoder>

常见注意事项

  • 请求头的key匹配大小写不敏感,无论写referer、Referer还是REFERER都能正确匹配到对应请求头值
  • 当对应请求头不存在时,占位符会自动返回空字符串,不会抛出空指针异常,无需额外编写判空逻辑
  • 不建议直接将整个request_headers序列化到JSON后再拆分取值,直接使用内置占位符的性能开销更低,也不会引入多余的冗余字段

内容的提问来源于stack exchange,提问作者rahul_vyas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.22 14:54:00