項目中同事使用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,遇到此類的問題時,可以嘗試改變一些固有的做法,或許是解決的問題一條路。
