应用日志记录

Envoy 及其过滤器会写入应用日志以进行调试。Envoy 可以配置为以与常用日志查看器兼容的格式输出应用日志。本节介绍如何配置 Envoy 以启用与每个日志查看器的集成。

使用 GKE 的 Stackdriver 日志记录

Stackdriver 日志记录 可以读取在 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,这会导致引导错误。