ロガーを取得して、特定のアペンダーを追加しようとしています。私のコードは非常に単純ですが、これを機能させる方法がわかりません。
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の3つの関数しかありませんでした。これらの関数を定義する方法がわかりません。その間、私は何かを試し、エラーを削除しました。コードを調べて、私がやっていることには意味があるかどうか教えてください。
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を使用するのは賢いコーディング方法ではないことは知っていますが、今のところ、これを機能させたいと思っています。このコードを実行すると、ログに記録したいファイルが取得されますが、その中にログがありません。レベルエラーをチェックしましたが、そうではありません。エンコーダー/レイアウトに問題があると思います。修正方法がわかりません。誰かがクラスを拡張して関数を適用する方法、またはこの新しいコードの何が問題になっているのかを教えてもらえますか?