テストの一環として、EventFilter と TestEventListener を使用してログ メッセージをリッスンしています。ただし、これを行うと、コマンド プロンプトに大量のエラーが発生し、テストの実行が非常に難しくなります。
サンプルコード:
it("should send a welcome message to the user", SystemFortressTest) {
val stub = new SubFortressBuildingPermitRefTraitImplStub
EventFilter.debug(message = "SystemFortressExchange: Received Message: SystemOutput(List(JITMP Booted))", occurrences = 1) intercept {
stub.buildASubFortress(SystemFortressBlueprintRef)
}
}
このコードは機能しますが、TestEventListener はデフォルトで STDOUT に出力されるため、デバッグ レベルのデータがあふれます (デフォルトのロガーをサブクラス化するため、STDOUT のみのログ記録となります)。
Akka の上にある独自のロギング抽象化を展開し、Akka のものに到達する前にそこからのメッセージをフィルター処理できます。コマンド プロンプトが汚染されることはありません。同様のソリューションがすでに利用可能です。
問題は、SL4J ロガーを使用すると、EventFilter が機能しないことです。