我想獲取一個記錄器並添加一個特定的appender到它。我的代碼非常簡單,但我不確定如何使這個工作。添加一個Appender不起作用
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
我不知道這是什麼錯誤意味着以及如何解決它。有人能幫我嗎?
編輯:
我試圖做的是由drexin所告知的。我無法擴展界面並定義功能。只有三個函數,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不是一種聰明的編碼方式,但現在我想做這個工作。當我執行這段代碼時,我得到了我想要登錄的文件,但裏面沒有日誌。我檢查了級別錯誤,但事實並非如此。我相信編碼器/佈局有問題。我不知道如何解決它。有人能告訴我如何擴展這個類並應用這個新代碼中的函數或錯誤。