envoyproxy/envoy

[Feature Request] Support environment variables in log formatting

Open

#12,767 建立於 2020年8月21日

在 GitHub 查看
 (5 留言) (15 反應) (1 負責人)C++ (5,373 fork)batch import
area/access_logenhancementhelp wanted

倉庫指標

Star
 (27,997 star)
PR 合併指標
 (平均合併 8天) (30 天內合併 378 個 PR)

描述

Adding a request to support environment variables in our log formatting, perhaps using the ENV key (similar to REQ, RESP, etc). HOSTNAME is an already supported keyword pulled from the environment--this feature would expand on that.

Some values are known ahead of time and can be baked into the log format. However, the use case would be for logging runtime values (host IP, AZ, etc) that are only known when the container is deployed. Our current solution is to parse the config file, injecting selected envvars, etc before booting the service.

access_log:
  - name: envoy.access_loggers.file
    config:
      path: /dev/stdout
      json_format:
        hostname: "%HOSTNAME%"
        method: "%REQ(:METHOD)%"
        app_version: "%ENV(APP_VERSION)%"
        private_ip: "%ENV(PRIVATE_IP)%"
        region: "%ENV(REGION)%"
export APP_VERSION=0.1.0
export PRIVATE_IP=192.168.1.5
export REGION=us-east-1
envoy -c envoy.yaml

#=> {
  "hostname":"macbook-pro",
  "method":"GET",
  "app_version": "0.1.0",
  "private_ip": "192.168.1.5",
  "region": "us-east-1"
}

貢獻者指南