應用程式日誌
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
,這將導致引導錯誤。