16.4. 控制台日志处理程序
控制台日志处理程序默认启用,为控制台提供无结构日志消息。
16.4.1. 配置控制台日志格式
红帽 Keycloak 的构建使用基于模式的日志格式器,默认生成人类可读的文本日志。
这些行的日志记录格式模板可以在根级别上应用。默认格式模板为:
-
%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%c](%t)%s%e%n
格式字符串支持下表中的符号:
符号 | Summary | 描述 |
---|---|---|
%% | % | 呈现简单的%字符。 |
%c | 类别 | 呈现日志类别名称。 |
%d{xxx} | Date |
使用 |
%e | 例外 | 呈现抛出异常。 |
%h | 主机名 | 呈现简单的主机名。 |
%H | 限定主机名 | 呈现完全限定主机名,该主机名可能与简单的主机名相同,具体取决于操作系统配置。 |
%i | 进程 ID | 呈现当前进程 PID。 |
%m | 完整消息 | 如果抛出,则呈现日志消息和异常。 |
%n | 换行符 | 呈现特定于平台的行分隔符字符串。 |
%N | 进程名称 | 呈现当前进程的名称。 |
%p | 级别 | 呈现消息的日志级别。 |
%r | 相对时间 | 从应用程序日志开始后,呈现时间(毫秒)。 |
%s | 简单消息 | 仅在没有异常追踪的情况下呈现日志消息。 |
%t | 线程名称 | 呈现线程名称。 |
%t{id} | 线程 ID | 呈现线程 ID。 |
%z{<zone name>} | timezone | 将日志输出的时区设置为 <zone name>。 |
%L | 行号 | 呈现日志消息的行号。 |
16.4.2. 设置日志记录格式
要为日志记录行设置日志记录格式,请执行以下步骤:
- 使用上表构建所需的格式模板。
输入以下命令:
bin/kc.[sh|bat] start --log-console-format="'<format>'"
请注意,在使用 CLI 中调用包含特殊 shell 字符(如 )的命令时,您需要转义字符。
因此,请考虑在配置文件中设置它。
示例:缩写完全限定类别名称
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]
。
16.4.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
16.4.4. colors
默认禁用无结构日志的带颜色的控制台日志输出。颜色可能会提高可读性,但在向外部日志聚合系统发送日志时可能会造成问题。要启用或禁用颜色编码的控制台日志输出,请输入以下命令:
bin/kc.[sh|bat] start --log-console-color=<false|true>
16.4.5. 配置控制台日志级别
控制台日志处理器的日志级别可由 --log-console-level 属性指定
,如下所示:
bin/kc.[sh|bat] start --log-console-level=warn
如需更多信息,请参阅上面的 第 16.3 节 “为每个处理器指定日志级别” 部分。