应用日志记录
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,这会导致引导错误。