16.2. 启用日志处理程序


要启用日志处理程序,请输入以下命令:

bin/kc.[sh|bat] start --log="<handler1>,<handler2>"
Copy to Clipboard

可用的处理程序有:

  • 控制台
  • file
  • syslog

以下提到的更具体的处理程序配置仅在将处理程序添加到此逗号分隔列表中时生效。

16.2.1. 为每个处理器指定日志级别

log-level 属性指定所选类别的全局根日志级别和级别。但是,需要更精细的日志级别来满足现代应用的要求。

要为特定处理程序设置日志级别,格式为 log-<handler>-level (其中 & lt;handler > 是可用的日志处理程序)。

这意味着日志级别设置的属性如下:

  • log-console-level - Console log handler
  • log-file-level - File log handler
  • log-syslog-level - Syslog 日志处理程序
注意

log-<handler>-level 属性仅在启用了特定日志处理程序时才可用。以下日志处理程序设置中的更多信息。

只有 第 16.1.1 节 “日志级别” 部分指定的日志级别才会被接受,且必须为小写。尚不支持为日志处理程序指定特定的类别。

16.2.1.1. 常规原则

需要了解,为每个特定处理程序设置日志级别 不会覆盖 log-level 属性中指定的根级别。日志处理程序遵循 root 日志级别,这代表了整个日志记录系统的最大详细程度。这意味着单个日志处理程序可以配置为小于根日志记录器,但不能配置更多。

具体来说,当为处理程序定义了任意日志级别时,并不表示输出中会显示带有日志级别的日志记录。在这种情况下,还必须评估 root 日志级别。日志级别为 root 日志级别 提供限制,日志处理程序的默认日志级别 都是 无限制的。

16.2.1.2. 例子

示例:对文件处理程序进行 debug,但 console 处理程序的信息:

bin/kc.[sh|bat] start --log=console,file --log-level=debug --log-console-level=info
Copy to Clipboard

root 日志级别设置为 debug,因此每个日志处理程序都会继承值 - 因此,文件日志处理程序会继承文件日志处理程序。要 在控制台中隐藏调试 记录,我们需要将 console 处理程序的最小(最低严重)级别设置为 info

示例: 警告 所有处理程序,但对文件处理程序进行 debug

bin/kc.[sh|bat] start --log=console,file,syslog --log-level=debug --log-console-level=warn --log-syslog-level=warn
Copy to Clipboard

root 级别必须设置为最详细的必要级别(本例中为debug ),并且必须相应地修改其他日志处理程序。

示例:所有处理程序的信息,但对 Syslog 处理程序进行 debug+org.keycloak.events:trace

bin/kc.[sh|bat] start --log=console,file,syslog --log-level=debug,org.keycloak.events:trace, --log-syslog-level=trace --log-console-level=info --log-file-level=info
Copy to Clipboard

要查看 org.keycloak.events:trace,必须为 Syslog 处理程序设置 trace 级别。

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 (其中 &lt ;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
Copy to Clipboard

日志消息示例

{"@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"}
Copy to Clipboard

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat