Logback不同日志级别配置:实现info仅输出控制台debug同时写文件
问题原因
你当前配置的pro.tradeshare包日志级别为debug,默认情况下appender会接收大于等于配置级别的所有日志,所以debug、info、warn、error级别的日志都会被写入FILE appender,不符合你只保留debug级别的要求。
解决方法
在FILE类型的appender配置中添加LevelFilter,仅放行DEBUG级别的日志,拒绝其他所有级别日志即可。修改后的完整logback.xml配置如下:
<configuration> <property name="HOME_LOG" value="logs/app.log"/> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <appender name="FILE" class="ch.qos.logback.core.FileAppender"> <file>${HOME_LOG}</file> <append>true</append> <immediateFlush>true</immediateFlush> <encoder> <pattern>%d %p %c{1.} [%t] %m%n</pattern> </encoder> <!-- 新增级别过滤器,仅保留DEBUG级别日志 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>DEBUG</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <root level="info"> <appender-ref ref="STDOUT"/> </root> <logger name="pro.tradeshare" level="debug" additivity="false"> <appender-ref ref="STDOUT"/> <appender-ref ref="FILE"/> </logger> </configuration>
配置效果验证
修改后会完全符合你的预期:
pro.tradeshare包下的debug日志:同时输出到控制台、日志文件pro.tradeshare包下的info及以上级别日志:仅输出到控制台- 其他包的日志:按照root配置的info级别仅输出到控制台
内容的提问来源于stack exchange,提问作者Pavel
相关产品推荐
相关产品推荐

