加入我们,于10月8日至10日在纽约市学习有关GraphQL Federation和API平台工程的最新技巧、趋势和新闻。加入我们,参加2024年纽约市的GraphQL峰会
文档
免费开始

路由日志

在路由器中配置日志


提供内置日志记录来捕捉它们的活动记录。

支持 可配置日志级别 以及 标准输出输出日志消息(可以配置输出格式)。

日志级别

路由器接收命令行 以设置其日志级别:

名称描述
--log

日志级别,指示要包含的最严重日志消息类型。递增排序的详细程度,可以是以下之一:offerrorwarninfodebugtrace

默认值为 info

路由器还接受与命令行参数相同值的 RUST_LOGAPOLLO_ROUTER_LOG 环境变量。

  1. RUST_LOG
  2. 命令行参数
  3. APOLLO_ROUTER_LOG

对于高级用户(他们可能有特定的过滤需求,并希望看到路由器所消耗的 Crates 的日志消息),支持 RUST_LOG 大多数用户应使用命令行参数或 APOLLO_ROUTER_LOG 这两种选项都将日志输出限制在路由器上。

例如,以下每个环境变量和命令行参数都将日志级别设置为 debug

RUST_LOG=apollo_router::debug
APOLLO_ROUTER_LOG=debug
--log=debug

另一个例子,以下每一行都设置相同的日志级别

RUST_LOG=hyper=debug,apollo_router::info,h2=trace
APOLLO_ROUTER_LOG=hyper=debug,info,h2=trace
--log=hyper=debug,info,h2=trace

在两个例子中,路由器实际使用的筛选器值由 RUST_LOG 定义。

更多有关指定过滤器以进行更精细的路由器日志控制的信息,请参阅环境日志器文档

日志配置常见选项

路由器支持适用于所有日志输出器的配置选项:

服务名称

为您的路由器's日志设置一个服务名称,以便您可以在仪表盘上轻松查找并搜索。

可以通过环境变量或在router.yaml中设置服务名称。有多种方法可以设置服务名称,路由器会按照以下顺序检查它们,并使用第一个已设置的服务名称:

  1. OTEL_SERVICE_NAME环境变量

  2. OTEL_RESOURCE_ATTRIBUTES环境变量

  3. telemetry.exporters.logging.common.service_namerouter.yaml

  1. telemetry.exporters.logging.common.resourcerouter.yaml

如果未明确设置服务名称,则默认设置为unknown_service:apollo_router(如果无法确定可执行文件名称,则为unknown_service)。

资源属性

资源属性是一组键值对,为输出器提供附加信息。应用性能监视器(APM)可能会解释并显示资源信息。

router.yaml中,资源属性在telemetry.exporters.logging.common.resource中设置。例如:

router.yaml
telemetry:
exporters:
logging:
common:
resource:
"environment.name": "production"
"environment.namespace": "{env.MY_K8_NAMESPACE_ENV_VARIABLE}"

关于 OpenTelemetry 资源约定,请参阅资源语义约定.

请求/响应日志

此功能是 实验性的。您的疑问和反馈将受到高度重视请随时与您的 Apollo 联系人取得联系. 如果您想提供反馈或参与此功能,请随意加入GitHub 上的讨论.

默认情况下,router不会记录以下可能包含敏感数据的值,即使设置了足够的日志级别:

  • 请求数据
  • 响应数据
  • 头部

您可以通过experimental_when_header选项启用对以下值的选择性日志记录:

router.yaml
telemetry:
exporters:
logging:
# If one of these headers matches we will log supergraph and subgraphs requests/responses
experimental_when_header:
- name: apollo-router-log-request
value: my_client
headers: true # default: false
body: true # default: false
# log request for all requests coming from Iphones
- name: user-agent
match: ^Mozilla/5.0 (iPhone*
headers: true

日志记录常见参考

属性默认描述
service_nameunknown_service:routerOpenTelemetry 服务名称。
service_namespaceOpenTelemetry 命名空间。
resource要将附生成的日志事件 OpenTelemetry 资源附加到。

实验性日志记录破坏管道错误

您可以在客户端提前关闭连接时,每次发出一条日志消息,这可以帮助您调试客户端在服务器响应之前关闭连接的问题。

此功能默认情况下是禁用的,但可以通过将experimental_log_broken_pipe选项设置为true来启用:

router.yaml
supergraph:
experimental_log_on_broken_pipe: true
属性默认描述
experimental_log_on_broken_pipefalse如果检测到破坏管道,则发出一条日志消息。
上页
客户端意识
下页
控制台输出
对文章评分评分在GitHub上编辑编辑论坛Discord

©2024Apollo Graph Inc.,商标号为Apollo GraphQL。

隐私政策

公司