使用logback自定义appender无法生效
项目中同事使用logback输出日志记录,使用了简单自定义实现类作为输出类,使用代码及配置如下:
1 import ch.qos.logback.classic.spi.LoggingEvent; 2 import ch.qos.logback.core.AppenderBase; 3 4 public class MyAppender extends AppenderBase<LoggingEvent> { 5 @Override 6 protected void append(LoggingEvent eventObject) { 7 System.out.println("Test append method"); 8 } 9 }
<?xml version="1.0" encoding="UTF-8"?> <configuration scan="false" scanPeriod="60 seconds" debug="false"> <appender name="myAppender" class="com.hx.MyAppender"/> <logger name="qcLogger" additivity="false"> <level value="info"/> <appender-ref ref="myAppender"/> </logger> </configuration>
<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.26</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.3</version> </dependency>
我使用IDEA导入项目后,始终无法调用append方法,起初怀疑是源代码或配置文件问题,对比同事代码后无差异;
后来我排除我本地环境干扰,把代码在新建的项目中运行,依然无法调用,我试着调整依赖的版本,将sl4j-api版本调为1.6.x,结果调用成功,但是又warning
之后我恢复sl4j-api到1.7.x也可以调用成功,且warning消失,至此算是解决了输出问题,虽然最终也不太清楚这个问题的原因,
但是作为一名pragmatic developer,遇到此类的问题时,可以尝试改变一些固有的做法,或许是解决的问题一条路。