如何配置可动态调整级别的Plain Text与JSON双文件日志?
解决方案:同时输出纯文本与JSON格式日志并支持运行时级别调整
要实现同时生成纯文本和JSON两种格式的文件日志,且各自级别可独立运行时调整,你可以通过Quarkus的命名文件日志处理器结合quarkus-logging-json扩展来实现,具体步骤如下:
1. 添加必要依赖
在pom.xml(Maven)或build.gradle(Gradle)中加入以下依赖:
- 核心文件日志依赖:
io.quarkus:quarkus-logging-file - JSON日志格式化依赖:
io.quarkus:quarkus-logging-json
Maven示例:
<dependency> <groupId>io.quarkus</groupId> <artifactId>quarkus-logging-file</artifactId> </dependency> <dependency> <groupId>io.quarkus</groupId> <artifactId>quarkus-logging-json</artifactId> </dependency>
2. 配置双格式文件日志
在application.properties中定义两个命名文件处理器,分别对应纯文本和JSON格式,再将根日志(或指定日志类别)关联这两个处理器:
# 配置纯文本文件处理器(命名为plain-text-file) quarkus.log.handlers.plain-text-file.type=file quarkus.log.handlers.plain-text-file.path=logs/app-plain.log quarkus.log.handlers.plain-text-file.level=INFO quarkus.log.handlers.plain-text-file.format=%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%c{3.}] (%t) %s%e%n # 配置JSON文件处理器(命名为json-file) quarkus.log.handlers.json-file.type=file quarkus.log.handlers.json-file.path=logs/app-json.log quarkus.log.handlers.json-file.level=DEBUG # 启用JSON格式化,自动使用quarkus-logging-json的配置 quarkus.log.handlers.json-file.formatter=json # 将根日志同时关联两个处理器 quarkus.log.handlers=plain-text-file,json-file # 根日志级别需设置为不低于两个处理器的级别,避免日志被过滤 quarkus.log.level=DEBUG
3. 运行时独立调整日志级别
Quarkus支持运行时动态调整日志配置,你可以通过以下方式分别修改两个处理器的级别:
- 环境变量:设置
QUARKUS_LOG_HANDLERS_PLAIN_TEXT_FILE_LEVEL=WARN或QUARKUS_LOG_HANDLERS_JSON_FILE_LEVEL=TRACE - 配置文件重载:修改
application.properties后,通过Quarkus的配置刷新机制(如发送POST请求到/q/config/reload,需启用quarkus-smallrye-config扩展支持配置重载) - Quarkus Dev UI:开发模式下,直接通过Dev UI的日志配置面板调整
关键说明
- 命名处理器通过
quarkus.log.handlers.<handler-name>前缀区分不同输出配置,每个处理器可独立设置路径、级别、格式 - JSON处理器只需指定
formatter=json即可启用quarkus-logging-json的格式化能力,无需额外复杂配置 - 根日志级别需设置为所有处理器级别中的最低值,否则级别高于根日志的处理器将无法接收对应日志
内容的提问来源于stack exchange,提问作者user1340123
相关产品推荐
相关产品推荐

