如何通过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
相关产品推荐
相关产品推荐

