无法在scala中为log4j2创建自定义Appender

s1ag04yj  于 2022-11-06  发布在  Scala
关注(0)|答案(1)|浏览(285)

我尝试在Scala中创建一个自定义Appender(在UT中使用),将log4j1迁移到log4j2,但我做不到。
在log4j1中,如下所示:

class TestAppender extends AppenderSkeleton {

}

现在我在做一些事情

class TestAppender extends AbstractAppender {

}

但我得到

Cannot resolve overloaded constructor `AbstractAppender`

有什么想法吗?

1cklez4t

1cklez4t1#

在Java中,你可以用super(arguments)调用构造函数中的超类构造函数。但是在Scala中,因为类的主体(不包括def s)是类的默认构造函数,所以超类构造函数是通过在extends子句中传递参数来调用的:

class TestAppender extends AbstractAppender(...) {

由于AbstractAppender的唯一未被弃用的构造函数似乎是以下构造函数,因此您几乎肯定需要类似以下的构造函数:

class TestAppender extends AbstractAppender("test", someFilter, someLayout, whetherToIgnoreExceptions, Array()) {

如果要允许类的用户为AbstractAppender指定参数,则应执行类似以下操作:

class TestAppender(ignoreExceptions: Boolean) extends AbstractAppender("test", someFilter, someLayout, ignoreExceptions, Array()) {

相关问题