You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Quarkus启动信息打印异常求助:自定义日志过滤器引发格式问题

问题根源

Quarkus启动时的Profile日志是带参数的格式化日志,原始LogRecord里的message字段是占位符模板Profile%s %s activated. %s,参数数组中包含实际填充值(比如dev)。你的自定义过滤器直接修改了这个模板字符串,导致后续日志框架无法用参数正确填充占位符,最终输出未解析的%s。

解决方案

修改过滤器逻辑,先把带参数的模板和参数合并成完整文本,再替换换行符,同时清空参数避免重复格式化:

import io.quarkus.logging.LoggingFilter;
import java.util.logging.Filter;
import java.util.logging.LogRecord;
import java.text.MessageFormat;

@LoggingFilter(name = "DefaultConsoleFilter")
public class DefaultConsoleFilter implements Filter {
    @Override
    public boolean isLoggable(LogRecord record) {
        String message = record.getMessage();
        Object[] params = record.getParameters();
        
        // 处理带参数的格式化日志
        if (params != null && params.length > 0) {
            message = MessageFormat.format(message, params);
            record.setParameters(null); // 清空参数,防止后续重复格式化
        }
        
        // 替换换行符
        if (message != null) {
            message = message.replace("\r\n", "\n").replace("\n", "\\n");
        }
        record.setMessage(message);
        return true;
    }
}
关键说明
  • 优先处理带参数的日志:必须先用MessageFormat将模板和参数合并成完整文本,再做换行符替换,否则占位符无法被正确解析。
  • 清空参数数组:避免日志框架后续再次尝试用原始模板格式化,引发异常或错误输出。
  • 增加空值判断:防止message为null时触发空指针异常。

内容的提问来源于stack exchange,提问作者ave4496

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 05:07:03