1.3. 设置运行时配置


您可以在 application.properties 文件中配置日志记录级别和类别。

日志记录类别是分级。当您为类别设置日志级别时,配置会应用到该类别的所有子类。

有两个日志记录级别设置: 日志级别和最小日志记录级别。默认日志记录级别为 INFO,默认的最小日志记录级别为 DEBUG。您可以使用 quarkus.log. level 和 quarkus.log.min-level 属性或类别全局调整。

当您在最小日志记录级别下设置日志级别时,您必须调整最小日志记录级别。否则,最小日志记录级别的值会覆盖日志级别。

过度日志记录对性能有影响。您可以调整最小日志记录级别,以仅收集与应用程序相关的数据。减少日志卷可能会优化内存用量并改进应用程序的性能。例如,在原生执行中,最小级别启用较低级别的检查(isTraceEnabled)被折叠为 false,这会导致代码删除。

流程

  • application.properties 文件中配置日志记录:

    以下示例演示了如何将默认日志记录级别设置为 INFO 日志记录,并包含 Hibernate DEBUG 日志:

    application.properties 文件示例

    quarkus.log.level=INFO
    quarkus.log.category."org.hibernate".level=DEBUG
    Copy to Clipboard Toggle word wrap

    注意

    当您使用命令行设置配置属性时,请使用 " 转义。

    Example

    • -Dquarkus.log.category.\"org.hibernate\".level=TRACE

1.3.1. 配置日志记录格式

Quarkus 使用基于模式的日志格式器来生成人类可读的文本日志。日志条目显示时间戳、日志记录级别、类名称、线程 ID 和消息。您可以使用专用配置属性自定义每个日志处理程序的格式。

先决条件

  • 有一个 Quarkus Maven 项目。

流程

  • quarkus.log.console.format 设置值来配置控制台处理器,如下所示:

    application.properties 文件示例

    quarkus.log.console.format=%d{HH:mm:ss} %-5p [%c{2.}] (%t) %s%e%n
    Copy to Clipboard Toggle word wrap

    此配置会产生以下日志消息格式:

    14:11:07 INFO  [ExampleResource] (executor-thread-199) Hello
    Copy to Clipboard Toggle word wrap

1.3.1.1. 日志记录格式字符串

下表显示了可用于配置日志消息格式的日志记录格式字符串符号。

Expand
表 1.1. 支持的日志记录格式符号
符号概述描述

%%

%

简单 % 字符

%c

类别

类别名称

%C

源类

源类名称 [a]

%d{xxx}

Date

给定日期格式字符串的日期,它遵循 java.text.SimpleDateFormat 示例。

%e

例外

异常堆栈追踪

%F

源文件

源文件名 [a]

%h

主机名

系统简单主机名

%H

合格主机名

系统的完全限定主机名。根据操作系统配置,它可能与简单主机名相同。

%i

进程 ID

当前进程 PID

%L

源位置

源位置(源文件名、行号、类名称和方法名称) [a]

%L

源行

源行号 [a]

%m

完整消息

包括异常追踪的日志消息

%M

源方法

源方法名称 [a]

%n

newline

特定于平台的行分隔符字符串

%N

进程名称

当前进程的名称

%p

级别

消息的日志记录级别

%r

相对时间

应用程序日志开始的相对时间(以毫秒为单位)

%s

简单消息

没有异常追踪的日志消息

%t

线程名称

线程名称

%T{id}

线程 ID

线程 ID

%z{<zone name>}

时区

输出的时区,格式为 < zone name&gt;。

%x{<MDC 属性 name>}

映射诊断上下文值

映射诊断上下文中的值

%X

映射诊断上下文值

来自 Mapped Diagnostics Context 的所有值,格式为 {property.key=property.value}

%x

嵌套诊断上下文值

{value1.value2} 格式的 Nested Diagnostics Context 的所有值

[a] 检查调用者信息的格式序列可能会影响性能。

1.3.2. 日志记录类别设置

您可以使用日志记录类别根据它们的严重性或它们所属的组件来组织日志消息。每个类别都可以独立配置。

对于每个类别,相同的设置适用于 console、file 和 syslog。您可以通过将一个或多个指定处理程序附加到类别来覆盖设置。

Expand
表 1.2. 日志记录类别配置属性
属性名称default描述

quarkus.log.category."<category-name>".level

INFO [a]

配置 < category-name > 类别的级别。

quarkus.log.category."<category-name>".min-level

DEBUG

配置 < category-name& gt; 类别的最低日志记录级别。

quarkus.log.category."<category-name>".use-parent-handlers

true

启用日志记录器将其输出发送到父日志记录器。

quarkus.log.category."<category-name>".handlers=[<handler>]

empty [b]

要附加到特定类别的处理程序的名称。

[a] 有些扩展定义了特定类别的自定义默认日志记录级别,以减少日志记录。在配置中设置日志级别会覆盖任何扩展的日志记录级别。
[b] 默认情况下,配置的类别从根日志记录器类别继承所有附加的处理程序。
注意

在将日志记录类别名称放在属性名称中时,将日志记录类别名称放在双引号中,以转义通常属于类别名称的句点(.)。

1.3.3. 日志记录级别

您可以使用日志记录级别按严重性对日志进行分类,或者它们对 Quarkus 应用程序的健康状态和稳定性的影响。通过日志记录级别,您可以从纯信息的事件过滤关键事件。

Expand
表 1.3. Quarkus 支持以下日志记录级别:
日志记录级别描述

OFF

用于关闭日志记录的特殊级别。

FATAL

关键服务故障或无法完成服务请求。

ERROR

请求出现重大中断,或者无法服务请求。

WARN

非关键服务错误或可能不需要立即纠正的问题。

INFO

服务生命周期事件或重要相关的非常频率信息。

DEBUG

提供有关生命周期或非请求绑定事件的额外调试信息的消息。

TRACE

传递的消息具有高频率,可提供额外每个请求的调试信息。

ALL

包括自定义级别在内的所有消息的特殊级别。

注意

另外,您可以使用 java.util.logging 软件包中描述的日志级别名称。

1.3.4. 根日志记录器配置

根日志记录器类别位于日志记录器层次结构的顶部,其配置在日志配置的顶级。根日志记录器捕获发送到服务器的指定日志记录级别或更高级别的所有日志消息,不会由日志记录类别捕获。

Expand
表 1.4. 根日志记录器配置属性
属性名称default描述

quarkus.log.level

INFO

每个日志记录类别的默认日志记录级别。

quarkus.log.min-level

DEBUG

每个日志记录类别的默认最小日志记录级别。

1.3.5. Quarkus 日志处理程序

日志处理程序是一个日志记录组件,将日志事件发送到接收者。Quarkus 包括以下日志处理程序:

控制台日志处理程序
控制台日志处理程序默认为启用。它将所有日志事件输出到应用程序的控制台(通常是系统的 stdout)。
文件日志处理程序
文件日志处理程序默认为禁用。它将所有日志事件输出到应用程序主机上的文件中。文件日志处理程序支持日志文件轮转。
syslog 日志处理程序

syslog 是一个在类似 Unix 的系统上发送日志消息的协议。syslog 协议的规格在 RFC 5424 中定义。

syslog 处理程序将所有日志事件发送到 syslog 服务器(默认情况下,syslog 服务器与应用程序在同一主机上运行)。syslog 处理程序默认为禁用。

1.3.6. 日志配置示例

本节演示了如何为 Quarkus 项目配置日志记录示例。

application.properties 文件示例

# Format log messages to have shorter time and shorter category prefixes.
quarkus.log.console.format=%d{HH:mm:ss} %-5p [%c{2.}] (%t) %s%e%n

# Remove color from log messages.
quarkus.console.color=false

# Enable console DEBUG logging with the exception of Quarkus logs that have a logging level set to INFO.
quarkus.log.console.level=DEBUG
quarkus.log.category."io.quarkus".level=INFO
Copy to Clipboard Toggle word wrap

application.properties 文件示例

# Enable file logging and set a path to the log file.
quarkus.log.file.enable=true
quarkus.log.file.path=/tmp/trace.log

# Enable TRACE log messages in a log file.
quarkus.log.file.level=TRACE

# Set a format for the log file output.
quarkus.log.file.format=%d{HH:mm:ss} %-5p [%c{2.}] (%t) %s%e%n

# Set logging level to TRACE for specific categories.
quarkus.log.category."io.quarkus.smallrye.jwt".level=TRACE
quarkus.log.category."io.undertow.request.security".level=TRACE
Copy to Clipboard Toggle word wrap

注意

默认情况下,根日志记录器级别设置为 INFO。当您要收集较低级别的日志时,更改根日志记录器配置,如 DEBUGTRACE

application.properties 文件示例

# Set path to the log file.
quarkus.log.file.path=/tmp/trace.log

# Configure console format.
quarkus.log.console.format=%d{HH:mm:ss} %-5p [%c{2.}] (%t) %s%e%n

# Configure a console log handler.
quarkus.log.handler.console."STRUCTURED_LOGGING".format=%e%n

# Configure a file log handler.
quarkus.log.handler.file."STRUCTURED_LOGGING_FILE".enable=true
quarkus.log.handler.file."STRUCTURED_LOGGING_FILE".format=%e%n

# Configure the category and associate it with the two named handlers.
quarkus.log.category."io.quarkus.category".level=INFO
quarkus.log.category."io.quarkus.category".handlers=STRUCTURED_LOGGING,STRUCTURED_LOGGING_FILE
Copy to Clipboard Toggle word wrap

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat