16.6. 使用 Syslog 进行集中式日志记录


Red Hat build of Keycloak 提供了将日志发送到远程 Syslog 服务器的功能。它使用 RFC 5424 中定义的协议。

16.6.1. 启用 Syslog 处理程序

要使用 Syslog 启用日志记录,请将其添加到激活的日志处理程序列表中,如下所示:

bin/kc.[sh|bat] start --log="console,syslog"

16.6.2. 配置 Syslog 应用程序名称

要设置不同的应用程序名称,请添加 the --log-syslog-app-name 选项,如下所示:

bin/kc.[sh|bat] start --log="console,syslog" --log-syslog-app-name=kc-p-itadmins

如果没有设置,应用程序名称默认为 keycloak

16.6.3. 配置 Syslog 端点

要配置集中式日志记录系统的端点(host:port),请输入以下命令并将值替换为您的特定值:

bin/kc.[sh|bat] start --log="console,syslog" --log-syslog-endpoint=myhost:12345

启用 Syslog 处理程序后,主机将使用 localhost 作为主机值。默认端口为 514

16.6.4. 配置 Syslog 日志级别

Syslog 日志处理器的日志级别可由 -log-syslog-level 属性指定,如下所示:

bin/kc.[sh|bat] start --log-syslog-level=warn

如需更多信息,请参阅上面的 第 16.3 节 “为每个处理器指定日志级别” 部分。

16.6.5. 配置 Syslog 协议

syslog 使用 TCP 作为通信的默认协议。要使用 UDP 而不是 TCP,请添加 --log-syslog-protocol 选项,如下所示:

bin/kc.[sh|bat] start --log="console,syslog" --log-syslog-protocol=udp

可用的协议有: tpcudpssl-tcp

16.6.6. 配置 Syslog 日志格式

要为日志记录行设置日志记录格式,请执行以下步骤:

  1. 使用上表构建所需的格式模板。
  2. 输入以下命令:

    bin/kc.[sh|bat] start --log-syslog-format="'<format>'"

请注意,在使用 CLI 中调用包含特殊 shell 字符(如 )的命令时,您需要转义字符。 因此,请考虑在配置文件中设置它。

示例:缩写完全限定类别名称

bin/kc.[sh|bat] start --log-syslog-format="'%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%c{3.}] (%t) %s%e%n'"

本例通过将类别名称缩写为三个字符,方法是在模板中设置 [%c{3.}],而不是默认的 [%c]

16.6.7. 配置 Syslog 类型

syslog 根据特定的 RFC 规格使用不同的消息格式。要使用不同的消息格式更改 Syslog 类型,请使用 --log-syslog-type 选项,如下所示:

bin/kc.[sh|bat] start --log-syslog-type=rfc3164

the -log-syslog-type 选项的可能值有:

  • RFC5424 (默认)
  • rfc3164

首选 Syslog 类型是 RFC 5424,它过时的 RFC 3164,称为 BSD Syslog 协议。

16.6.8. 配置 Syslog 最大消息长度

要设置允许发送的消息的最大长度(以字节为单位),请使用 --log-syslog-max-length 选项,如下所示:

bin/kc.[sh|bat] start --log-syslog-max-length=1536

可使用合适的后缀(如 1k1K )以内存大小格式指定长度。长度包括标头和消息。

如果没有显式设置长度,则会根据 --log-syslog-type 选项设置默认值,如下所示:

  • 2048b - 用于 RFC 5424
  • 1024B - for RFC 3164

16.6.9. 配置 Syslog 结构化输出

默认情况下,Syslog 日志处理程序将普通非结构化数据发送到 Syslog 服务器。要使用结构化 JSON 日志输出,请输入以下命令:

bin/kc.[sh|bat] start --log-syslog-output=json

日志消息示例

2024-04-05T12:32:20.616+02:00 host keycloak 2788276 io.quarkus - {"timestamp":"2024-04-05T12:32:20.616208533+02:00","sequence":9948,"loggerClassName":"org.jboss.logging.Logger","loggerName":"io.quarkus","level":"INFO","message":"Profile prod activated. ","threadName":"main","threadId":1,"mdc":{},"ndc":"","hostName":"host","processName":"QuarkusEntryPoint","processId":2788276}

使用 JSON 输出时,颜色会被禁用,且不会应用 by --log-syslog-format 设置。

要使用非结构的日志,请输入以下命令:

bin/kc.[sh|bat] start --log-syslog-output=default

日志消息示例

2024-04-05T12:31:38.473+02:00 host keycloak 2787568 io.quarkus - 2024-04-05 12:31:38,473 INFO  [io.quarkus] (main) Profile prod activated.

正如您所见,时间戳存在两次,因此您可以通过 --log-syslog-format 属性进行相应的处理。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.