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
可用的协议有: tpc
、udp
和 ssl-tcp
。
16.6.6. 配置 Syslog 日志格式
要为日志记录行设置日志记录格式,请执行以下步骤:
- 使用上表构建所需的格式模板。
输入以下命令:
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
16.6.8. 配置 Syslog 最大消息长度
要设置允许发送的消息的最大长度(以字节为单位),请使用 --log-syslog-max-length
选项,如下所示:
bin/kc.[sh|bat] start --log-syslog-max-length=1536
可使用合适的后缀(如 1k
或 1K
)以内存大小格式指定长度。长度包括标头和消息。
如果没有显式设置长度,则会根据 --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
属性进行相应的处理。