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