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

如何通过Logback配置:仅控制台输出INFO日志,文件输出INFO/DEBUG/ERROR日志

如何用Logback实现控制台仅输出INFO级日志,文件输出DEBUG/INFO/ERROR级日志

当前你的配置中,application.properties的logging.level.root=INFO限制了全局日志级别为INFO,导致DEBUG日志无法被处理;同时控制台和文件appender都继承了root的级别设置,所以两者都只输出INFO及以上日志。要实现需求,需要做以下调整:

1. 调整application.properties

将全局日志级别改为DEBUG,确保DEBUG日志能被Logback处理:

logging.level.root=DEBUG

2. 修改logback.xml配置

给控制台appender添加日志级别过滤器,过滤掉低于INFO的日志;保持文件appender无额外过滤,同时root级别设为DEBUG,确保文件能接收所有DEBUG及以上日志:

<configuration>
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <!-- 添加ThresholdFilter,仅允许INFO及以上级别日志输出到控制台 -->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>INFO</level>
        </filter>
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%-5p] - %m%n</pattern>
        </encoder>
    </appender>
    <appender name="ROTATE_FILE_DAILY" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>logs/application.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>logs/application-%d{yyyy-MM-dd}.log</fileNamePattern>
        </rollingPolicy>
        <encoder>
            <pattern>%d{MM-dd-yyyy HH:mm:ss.SSS} [%-5p][%logger{0}.%M\(%line\)] - %m%n</pattern>
        </encoder>
    </appender>
    <!-- root级别设为DEBUG,确保文件appender能接收DEBUG、INFO、ERROR级日志 -->
    <root level="DEBUG">
        <appender-ref ref="ROTATE_FILE_DAILY" />
        <appender-ref ref="CONSOLE" />
    </root>
</configuration>

配置说明

  • ThresholdFilter:作用是拦截低于指定级别的日志,这里给控制台appender设置INFO级别后,DEBUG日志会被过滤,不会输出到控制台。
  • root级别:设为DEBUG保证所有DEBUG、INFO、ERROR级别的日志都会被传递给关联的appender,文件appender没有额外过滤规则,因此会完整记录这些级别的日志。
  • application.properties调整:避免Spring Boot的全局配置限制日志级别,确保Logback的配置能生效。

内容的提问来源于stack exchange,提问作者ramkumar-yoganathan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 12:35:15