我正在尝试获取记录器并向其添加特定的附加程序。我的代码非常简单,但我不知道如何让它工作。
val loggerInstance = LoggerFactory.getLogger("FOO.class")
var fileAppender = new FileAppender()
// fileAppender .setFile , sietPattern etc..the parameters i want
loggerInstance.addAppender(fileAppender)
我在这里收到错误
Multiple markers at this line
- type mismatch; found : ch.qos.logback.core.FileAppender[Nothing] required:
ch.qos.logback.core.Appender[ch.qos.logback.classic.spi.ILoggingEvent] Note: Nothing <:
ch.qos.logback.classic.spi.ILoggingEvent, but Java-defined trait Appender is invariant in type E. You may wish to investigate a
wildcard type such as `_ <: ch.qos.logback.classic.spi.ILoggingEvent`. (SLS 3.2.10)
- Line breakpoint:loggerchange [line: 76] - addAppender
我不知道这个错误是什么意思以及如何解决它。有人能帮我吗?
编辑 :
我试着按照德雷辛所说的去做。我无法扩展接口并定义功能。只有三个函数,setName、getName 和 doAppend。我不确定如何定义这些功能。同时我尝试了一些东西并删除了错误。请查看代码,让我知道我所做的是否有意义。
val encoder = new PatternLayoutEncoder()
encoder2.setContext(context)
encoder2.setPattern("%msg%")
fileAppender.setAppend(true)
fileAppender.setContext(context)
fileAppender.setEncoder(encoder2.asInstanceOf[Encoder[Nothing]])
loggerInstance.asInstanceOf[Logger].addAppender(fileAppender
.asInstanceOf[Appender[ILoggingEvent]])
我知道使用 asInstanceOf 不是一种聪明的编码方式,但现在我想完成这项工作。当我执行这段代码时,我得到了我想要登录的文件,但里面没有日志。我检查了级别错误,但事实并非如此。我相信编码器/布局有问题。我不知道如何解决它。有人可以告诉我如何扩展类和应用函数或者这个新代码有什么问题吗?