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

将Spring默认「Started」日志级别从INFO改为WARN的方法

Spring启动日志级别调整与Kibana快速区分方案

能否将该日志改为WARN级别输出?

可以实现,但常规的logger级别配置无效——因为这条日志是Spring Boot代码中硬编码用INFO级别输出的。要修改它的输出级别,得借助Logback的过滤器来改写日志级别:

方法1:自定义过滤器类

  1. 编写一个简单的过滤器类,匹配目标日志并修改其级别:
import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.filter.Filter;
import ch.qos.logback.core.spi.FilterReply;

public class SpringStartupLogFilter extends Filter<ILoggingEvent> {
    @Override
    public FilterReply decide(ILoggingEvent event) {
        // 匹配"Started XXXX in X.XXX seconds (JVM running for X.XXX)"格式的日志
        boolean isTargetLog = event.getLevel().equals(ch.qos.logback.classic.Level.INFO)
                && event.getMessage().startsWith("Started ")
                && event.getMessage().contains("seconds (JVM running for");
        
        if (isTargetLog) {
            // 将级别改为WARN
            event.setLevel(ch.qos.logback.classic.Level.WARN);
            return FilterReply.ACCEPT;
        }
        return FilterReply.NEUTRAL;
    }
}
  1. 在logback-spring.xml的对应appender中注册这个过滤器:
<appender name="YOUR_APPENDER_NAME" class="ch.qos.logback.core.ConsoleAppender">
    <!-- 注册自定义过滤器 -->
    <filter class="com.your.package.SpringStartupLogFilter"/>
    <!-- 其他appender配置,比如encoder -->
    <encoder>
        <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
</appender>

方法2:用内置过滤器组合(无需自定义代码)

如果不想写自定义类,可以用Logback的EvaluatorFilter配合LevelChangeFilter,通过表达式匹配目标日志并修改级别:

<appender name="YOUR_APPENDER_NAME" class="ch.qos.logback.core.ConsoleAppender">
    <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
        <evaluator class="ch.qos.logback.classic.boolex.JaninoEventEvaluator">
            <!-- 表达式匹配目标日志 -->
            <expression>
                level == INFO &amp;&amp; message.startsWith("Started ") &amp;&amp; message.contains("seconds (JVM running for")
            </expression>
        </evaluator>
        <onMatch>ACCEPT</onMatch>
        <onMismatch>NEUTRAL</onMismatch>
        <!-- 将匹配到的INFO日志改为WARN级别 -->
        <filter class="ch.qos.logback.classic.filter.LevelChangeFilter">
            <level>INFO</level>
            <targetLevel>WARN</targetLevel>
        </filter>
    </filter>
    <!-- 其他appender配置 -->
</appender>

无法修改级别时,Kibana快速区分方案

如果上述配置因为版本兼容、日志初始化时机等问题无法生效,可以用以下方式在Kibana中快速定位这条日志:

  • 保存搜索过滤器:在Discover页面直接搜索message:"Started * seconds (JVM running for",将这个搜索条件保存为过滤器,之后一键调用即可筛选出目标日志。
  • 添加自定义采集字段:如果用Filebeat等工具采集日志,可以在采集规则中给匹配该特征的日志添加自定义字段(比如log_category:spring_startup),之后在Kibana中通过log_category:spring_startup快速筛选。
  • 创建专属可视化:针对这条日志的启动时间字段创建可视化图表(比如折线图统计启动耗时趋势),添加到仪表盘,方便快速查看和区分。
  • 打自定义标签:在Discover页面找到目标日志后,给它添加spring_startup这类自定义标签,后续可通过标签快速筛选。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 18:22:40