冯破浪

导航

使用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,遇到此类的问题时,可以尝试改变一些固有的做法,或许是解决的问题一条路。

posted on 2019-09-08 18:16  白羊F  阅读(2317)  评论(0编辑  收藏  举报