16.2.2. 为日志处理程序使用不同的 JSON 格式
每个日志处理程序都提供了以 JSON 格式具有结构化日志输出的功能。它可以被属性启用,格式为 log-<handler>-output=json (其中 & lt;handler& gt; 是一个日志处理程序)。
如果您需要生成的 JSON 的不同格式,您可以使用以下 JSON 输出格式:
-
默认(默认) -
ECS
ecs 值指的是 ECS (Elastic Common Schema)。
ECS 是一种开源、社区驱动的规范,用于定义用于 Elastic 解决方案的通用字段集合。ECS 规格与 OpenTelemetry Semantic Conventions 合并,目的是创建由 OpenTelemetry 维护的一个标准。
要更改 JSON 输出格式,引入了格式 log-<handler>-json-format (其中 < ;handler& gt; 是一个日志处理器)的属性:
-
log-console-json-format- Console log handler -
log-file-json-format- File log handler -
log-syslog-json-format- Syslog 日志处理程序
16.2.2.1. Example 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
如果要以 ECS (Elastic Common Schema)格式具有 JSON 日志,您可以输入以下命令:
bin/kc.[sh|bat] start --log-console-output=json --log-console-json-format=ecs
日志消息示例
{"@timestamp":"2025-02-03T14:53:22.539484211+01:00","event.sequence":9608,"log.logger":"io.quarkus","log.level":"INFO","message":"Keycloak 999.0.0-SNAPSHOT on JVM (powered by Quarkus 3.17.8) started in 4.615s. Listening on: http://0.0.0.0:8080","process.thread.name":"main","process.thread.id":1,"mdc":{},"ndc":"","host.hostname":"host-name","process.name":"/usr/lib/jvm/jdk-21.0.3+9/bin/java","process.pid":77561,"data_stream.type":"logs","ecs.version":"1.12.2","service.environment":"prod","service.name":"Keycloak","service.version":"999.0.0-SNAPSHOT"}