我正在尝试为logback编写一个appender,它将所有日志记录事件发送给akka actor,该actor维护一个监视系统的远程actor的列表。
起初看起来相对容易:
class MonitoringAppender extends AppenderBase[ILoggingEvent] {
def mon = Main.system.actorSelection("akka://Backend/user/MonitorEndpoint")
override def append(event: ILoggingEvent): Unit = {
mon ! Log(event.toString)
}
}
Main
是启动系统的对象,因此引用了ActorSystem
。我遇到的问题是,当第一条日志消息进入并且整个应用程序崩溃时,Main
似乎无法加载。
我尝试通过Main
mon
来尽可能延迟def
的使用。
是否有可能Main
可以在应用程序启动后添加此appender,或者在停用此appender并在系统准备好避免此问题后激活它?
答案 0 :(得分:3)
我认为这里更好的选择是只要您使用Akka的日志记录工具就可以收听日志记录事件流。如果您阅读文档here,特别是关于Loggers的部分,它应该让您了解如何将自定义日志记录处理程序添加到日志记录配置中。