将路由器日志记录到stdout
配置stdcout日志
您可以配置GraphOS 路由器或Apollo 路由器核心的日志输出将被定向到标准输出,且其输出格式可以设置为文本或 JSON。
有关一般日志配置,请参阅路由器日志配置。
标准输出配置
启用
默认情况下,标准输出日志输出是禁用的。
要启用标准输出日志,将enabled
选项设置为true
:
telemetry:exporters:logging:stdout:enabled: true
格式
您可以配置日志输出格式。默认格式取决于路由器的运行方式:
您可以在router.yaml
中使用telemetry.exporters.logging.stdout.format
显式设置格式:
telemetry:exporters:logging:stdout:enabled: trueformat: text
tty_format
当您在交互式shell中运行时,您可以配置日志格式。这在开发期间很有用。
如果同时配置了format
和tty_format
,则输出取决于router运行的 环境:
- 在交互式shell中,
tty_format
将具有优先权。 - 在非交互式shell中,
format
将具有优先权。
您可以在router.yaml
中使用telemetry.exporters.logging.stdout.tty_format
显式设置格式:
telemetry:exporters:logging:stdout:enabled: trueformat: jsontty_format: text
rate_limit
日志消息的生产速率可能太高,尤其是在请求处理错误时。为了防止router的日志被冗余消息填满,您可以使用rate_limit
选项来设置日志速率限制。
您可以针对每个日志位置设置日志速率限制,不同日志信息可以独立速率限制,具有相同信息但不同属性集度的日志行在相同速率下进行限制。此速率限制仅适用于向 stdout 日志记录,不影响发送到 OTLP 等具有自己的采样配置的跟踪导出器的事件。
要启用速率限制,设置 rate_limit
选项:
telemetry:exporters:logging:stdout:format: jsonrate_limit:capacity: 1 # number of allowed messages during the rate limiting intervalinterval: 3s
有关每个输出格式特有的配置选项,请参阅 text
和 json
格式参考。
配置参考
选项 | 值 | 默认 | 描述 |
---|---|---|---|
启用 | true |false | false | 启用或禁用 stdout 日志记录。 |
格式 | text |json | 有关详情,请参阅 格式文档。 | |
tty_format | text |json | 有关详情,请参阅 格式文档。 |
日志输出格式
您可以为日志配置不同的输出格式
每种格式都有其特定的配置设置。
text
text 格式可读性强,非常适合开发调试。它是默认的日志输出格式。
要使用 text
格式,在 router.yaml
中启用 telemetry.exporters.logging.stdout
并将格式设置为 text
:
telemetry:exporters:logging:stdout:enabled: trueformat: text # The default text format will be used
text 格式还可以用作 YAML 中的键,telemetry.exporters.logging.stdout.format.text
,以指定高级配置选项:
telemetry:exporters:logging:stdout:enabled: trueformat:text:ansi_escape_codes: truedisplay_filename: truedisplay_level: truedisplay_line_number: truedisplay_target: truedisplay_thread_id: truedisplay_thread_name: truedisplay_timestamp: truedisplay_resource: truedisplay_span_list: truedisplay_current_span: truedisplay_service_name: truedisplay_service_namespace: truedisplay_trace_id: truedisplay_span_id: true
示例 text
输出:
2023-10-30T15:49:34.174435Z INFO trace_id: bbafc3f048b6137375dd78c10df18f50 span_id: 40ede28c5df1b5cc main ThreadId(01) span_name{span_attr_1="span_attr_1" span_attr_2="span_attr_2"}: event_target: event_file.rs:32: event_attr_1="event_attr_1" event_attr_2="event_attr_2"
文本配置参考
选项 | 值 | 默认 | 描述 |
---|---|---|---|
ansi_escape_codes | true |false | true | 使用ANSI终端转义码。 |
display_filename | true |false | false | 日志事件发生时的文件名。 |
display_level | true |false | true | 日志事件的等级,如INFO、WARN、ERROR、TRACE。 |
display_line_number | true |false | false | 事件发生的行号。 |
display_target | true |false | false | 事件发生的模块名。 |
display_thread_id | true |false | false | 事件发生的线程ID。 |
display_thread_name | true |false | false | 事件发生的线程名。 |
display_timestamp | true |false | true | 事件发生的时间戳。 |
display_service_name | true |false | false | 在metrics common中配置的服务名。 |
display_service_namespace | true |false | false | 在metrics common中配置的服务命名空间。 |
display_trace_id | true |false | false | 事件发生的span中的跟踪ID。 |
display_span_id | true |false | false | 事件发生的span中的span ID。 |
display_span_list | true |false | true | 一个记录了事件发生及其所有属性的所有span到根的列表。 |
display_current_span | true |false | true | 事件发生的span及其所有属性。 |
json
该json
格式是一种机器可读格式,非常适合作为应用程序性能监控器(APM)的输入。
路由器支持由tracing-subscriber提供的结构化JSON输出。
要使用json
格式,在router.yaml
中启用telemetry.exporters.logging.stdout
并将格式设置为json
:
telemetry:exporters:logging:stdout:enabled: trueformat: json
每个日志条目将是一个单个的、格式良好的JSON文档,非常适合在您的首选APM工具中处理。
示例默认json
输出:
{"timestamp": "2023-10-30T14:09:34.771388Z","level": "INFO","trace_id": "54ac7e5f0e8ab90ae67b822e95ffcbb8","span_id": "d52e3478c718b8a9","fields": {"event_attr_1": "event_attr_1","event_attr_2": "event_attr_2"},"target": "event_target"}
您可以通过在router.yaml
中指定telemetry.exporters.logging.stdout.format.json
作为键来配置包含在JSON输出中的属性。
telemetry:exporters:logging:stdout:enabled: trueformat:json:display_filename: falsedisplay_level: truedisplay_line_number: falsedisplay_target: falsedisplay_thread_id: falsedisplay_thread_name: falsedisplay_timestamp: truedisplay_current_span: truedisplay_span_list: truedisplay_resource: truedisplay_trace_id: truedisplay_span_id: true
示例json
输出:
{"timestamp": "2023-10-30T15:47:52.570482Z","level": "INFO","trace_id": "54ac7e5f0e8ab90ae67b822e95ffcbb8","span_id": "d52e3478c718b8a9","fields": {"event_attr_1": "event_attr_1","event_attr_2": "event_attr_2"},"target": "event_target","filename": "event_file.rs","line_number": 32,"span": {"span_attr_1": "span_attr_1","span_attr_2": "span_attr_2","name": "span_name"},"spans": [{"span_attr_1": "span_attr_1","span_attr_2": "span_attr_2","name": "span_name"}],"threadName": "main","threadId": "ThreadId(1)"}
display_current_span
事件还可能输出关于它们所发生的span的信息,这对于记录特定请求的span附加属性非常有用。
要记录span信息,请将telemetry.exporters.logging.stdout.format.json.display_current_span
选项设置为true
:
telemetry:exporters:logging:stdout:enabled: trueformat:json:display_current_span: true
包含span信息的示例输出
{"timestamp": "2023-10-30T14:09:34.771388Z","level": "INFO","fields": {"event_attr_1": "event_attr_1","event_attr_2": "event_attr_2"},"target": "event_target","span": {"span_attr_1": "span_attr_1","span_attr_2": "span_attr_2","name": "span_name"}}
display_span_list
该telemetry.exporters.logging.stdout.format.json.display_span_list
选项与display_current_span
类似,但不同之处在于,display_span_list
输出所有事件发生的span的信息,而不仅仅是当前span的信息。
例如,如果您在请求头中有一个自定义的trace_id
,只要在router
段落上配置了该属性,它就会出现在与请求相关的所有日志事件上。
telemetry:exporters:logging:stdout:enabled: trueformat:json:display_span_list: true
带有跨度列表的示例输出
{"timestamp": "2023-10-30T14:09:34.771388Z","level": "INFO","fields": {"event_attr_1": "event_attr_1","event_attr_2": "event_attr_2"},"target": "event_target","spans": [{"span_attr_1": "span_attr_1","span_attr_2": "span_attr_2","name": "span_name"}]}
显示资源
配置选项 telemetry.logging.stdout.format.json.display_resource
controls whether the resources specified in router.yaml
are displayed in log messages. By default, display_resource
is true
).
例如,给定一个包含 display_resource: true
的 router.yaml
和已配置的 resource
,日志消息将显示资源:
telemetry:exporters:logging:stdout:format:json:display_resource: truecommon:service_name: bryn-routerresource:test.resource: test
"resource":{"test.resource":"test","service.name":"bryn-router"}
json
配置参考
选项 | 值 | 默认 | 事件字段 | 描述 |
---|---|---|---|---|
display_current_span | true |false | false | 跨度 | 事件发生的span及其所有属性。 |
display_filename | true |false | false | 文件名 | 日志事件发生时的文件名。 |
display_level | true |false | true | 级别 | 日志事件的等级,如INFO、WARN、ERROR、TRACE。 |
display_line_number | true |false | false | 行号 | 事件发生的行号。 |
display_target | true |false | true | 目标 | 事件发生的模块名。 |
display_thread_id | true |false | false | 线程ID | 事件发生的线程ID。 |
display_thread_name | true |false | false | 线程名 | 事件发生的线程名。 |
display_timestamp | true |false | true | 时间戳 | 事件发生的时间戳。 |
display_span_list | true |false | true | 跨度 | 一个记录了事件发生及其所有属性的所有span到根的列表。 |
显示资源 | true |false | true | 资源 | 在跟踪公共配置的资源 |
display_trace_id | true |false | true | 跟踪ID | 事件发生的span中的跟踪ID。 |
display_span_id | true |false | true | 跨度ID | 事件被提升的跨度的跨度ID。 |