13.3. 控制台日志处理程序
控制台日志处理程序默认为启用,为控制台提供无结构日志消息。
13.3.1. 配置控制台日志格式
Red Hat build of Keycloak 使用基于模式的日志格式器,它默认生成人类可读的文本日志。
这些行的日志记录格式模板可以在 root 级别应用。默认格式模板为:
-
%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%c](%t)%s%e%n
格式字符串支持下表中的符号:
符号 | 概述 | 描述 |
---|---|---|
%% | % | 呈现简单的%字符。 |
%c | 类别 | 呈现日志类别名称。 |
%d{xxx} | Date |
使用由 |
%e | 例外 | 呈现出的异常。 |
%h | 主机名 | 呈现简单的主机名。 |
%H | 合格主机名 | 根据操作系统配置,呈现的完全限定主机名可能与简单主机名相同。 |
%i | 进程 ID | 呈现当前进程 PID。 |
%m | 完整消息 | 呈现日志消息和异常(如果抛出)。 |
%n | newline | 呈现特定于平台的行分隔符字符串。 |
%N | 进程名称 | 呈现当前进程的名称。 |
%p | 级别 | 呈现消息的日志级别。 |
%r | 相对时间 | 以毫秒为单位呈现应用程序日志开始的时间。 |
%s | 简单消息 | 仅呈现没有异常追踪的日志消息。 |
%t | 线程名称 | 呈现线程名称。 |
%T{id} | 线程 ID | 呈现线程 ID。 |
%z{<zone name>} | timezone | 将日志输出的时区设置为 <zone name>。 |
%L | 行号 | 呈现日志消息的行号。 |
13.3.2. 设置日志记录格式
要为日志记录行设置日志记录格式,请执行以下步骤:
- 使用上表构建您需要的格式模板。
输入以下命令:
bin/kc.[sh|bat] start --log-console-format="'<format>'"
请注意,在调用包含特殊 shell 字符的命令时,您需要使用 CLI 来转义字符 ;
因此,请考虑在配置文件中设置它。
示例:缩写完全限定类别名称
bin/kc.[sh|bat] start --log-console-format="'%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%c{3.}] (%t) %s%e%n'"
本例通过将类别名称缩写为三个字符,方法是在模板中设置 [%c{3.}]
,而不是默认的 [%c]
。
13.3.3. 配置 JSON 或普通控制台日志记录
默认情况下,控制台日志处理程序会将普通非结构化数据记录到控制台。要使用结构化 JSON 日志输出,请输入以下命令:
bin/kc.[sh|bat] start --log-console-output=json
日志消息示例
{"timestamp":"2022-02-25T10:31:32.452+01:00","sequence":8442,"loggerClassName":"org.jboss.logging.Logger","loggerName":"io.quarkus","level":"INFO","message":"Keycloak 18.0.0-SNAPSHOT on JVM (powered by Quarkus 2.7.2.Final) started in 3.253s. Listening on: http://0.0.0.0:8080","threadName":"main","threadId":1,"mdc":{},"ndc":"","hostName":"host-name","processName":"QuarkusEntryPoint","processId":36946}
使用 JSON 输出时,会禁用颜色,由 --log-console-format
设置的格式设置将不适用。
要使用非结构化日志记录,请输入以下命令:
bin/kc.[sh|bat] start --log-console-output=default
日志消息示例:
2022-03-02 10:36:50,603 INFO [io.quarkus] (main) Keycloak 18.0.0-SNAPSHOT on JVM (powered by Quarkus 2.7.2.Final) started in 3.615s. Listening on: http://0.0.0.0:8080
13.3.4. colors
默认禁用无结构日志的带颜色控制台日志输出。颜色可能会提高可读性,但可能会在日志发送到外部日志聚合系统时导致问题。要启用或禁用颜色编码的控制台日志输出,请输入以下命令:
bin/kc.[sh|bat] start --log-console-color=<false|true>