應用程式日誌

Envoy 及其篩選器會寫入應用程式日誌以進行除錯。Envoy 可以設定為以與常見日誌檢視器相容的格式輸出應用程式日誌。本節說明如何設定 Envoy 以啟用與每個日誌檢視器的整合。

使用 GKE 的 Stackdriver 日誌

Stackdriver Logging 可以從在 Google Kubernetes Engine 上執行的容器讀取日誌。Envoy 應使用以下 命令列選項進行設定

  • --log-format '%L%m%d %T.%e %t envoy/%@] [%t][%n]%v':日誌以 glog 格式格式化,允許 Stackdriver 解析日誌嚴重性和時間戳記。

  • --log-format-escaped:每個記錄的字串都會印在單行中。C 樣式的跳脫序列(例如 \n)將會被跳脫,並防止單一字串跨越多行。這可確保每個日誌行都使用 glog 前置詞進行結構化。

  • 由於 Stackdriver 可以從 STDERR 讀取日誌,因此不需要設定 --log-path 旗標。

  • 可以設定 --log-level 旗標來控制記錄到 Stackdriver 的日誌嚴重性。

有關 GKE 上 Stackdriver 的參考文件

以 JSON 格式列印日誌

可以使用引導組態 json_format 以自訂 JSON 格式列印日誌。json 格式結構可以支援 命令列選項 中指定的所有格式旗標,但 %v%_ 旗標除外,因為它們可能會破壞 JSON 結構日誌。請改用 %j 旗標。範例

application_log_config:
  log_format:
    json_format:
      Timestamp: "%Y-%m-%dT%T.%F"
      ThreadId: "%t"
      SourceLine: "%s:%#"
      Level: "%l"
      Message: "%j"
      FixedValue: "SomeFixedValue"

注意

不允許同時設定 application_log_config.log_format 和 CLI 選項 --log-format,這將導致引導錯誤。