【问题标题】:Custom Logback Appender not activated自定义 Logback Appender 未激活
【发布时间】:2022-07-26 02:29:29
【问题描述】:

Java 11 和 logback-classic-1.2.11 在这里。我正在尝试编写自己的自定义附加程序,并正在关注this Baeldung article 进行测试。

我的src/main/java/myapp/logging/CatAppender appender(在运行时类路径上):

public class CatAppender extends AppenderBase<ILoggingEvent> {
    @Override
    protected void append(ILoggingEvent eventObject) {
        System.out.println("meow");
    }
}

我的src/main/resources/logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="true">

    <appender name="cat" class="myapp.logging.CatAppender"/>

    <root level="info">
        <appender-ref ref="cat" />
    </root>

</configuration>

在我的build.gradle 中,我指定使用 logback 和 Lombok:

plugins {
    id "io.freefair.lombok" version '6.4.0'
}

dependencies {
    implementation (
        'ch.qos.logback:logback-classic:1.2.11'
        ,'org.projectlombok:lombok:1.18.16'
    )
}

然后在我的 Java 代码中,我使用 Lombok 注入一个 SLF4J 记录器,如下所示:

@Slf4j
public class SomethingDoer {

    public void doSomething() {
        log.info("this should invoke the CatAppender...");
    }

}

但是当SomethingDoer#doSomething() 运行时,我没有看到meow 打印到我的STDOUT 控制台。我这里有没有接错线?

【问题讨论】:

    标签: java logback slf4j lombok logback-classic


    【解决方案1】:

    Baeldung 文章中的一个主要遗漏是您需要调用自定义 appender 的 start() 方法,否则 AppenderBase 子类将不会记录日志消息。

    就我而言,我只是从 CatAppender 构造函数内部调用start(),一切正常:

    public class CatAppender extends AppenderBase<ILoggingEvent> {
        public CatAppender() {
            super();
            start();
        }
    
        @Override
        protected void append(ILoggingEvent eventObject) {
            System.out.println("meow");
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多