我正在使用Akka FSM使用Scala并使用log
特征的FSM
成员进行记录,即akka.event.Logging
的实例。
当应用程序想要正常终止时调用context.system.shutdown()
关闭actor系统时,似乎有时会丢失最新的日志消息(并且根本不会打印出来)。
是否可以保证在系统关闭之前始终打印出所有日志消息?
答案 0 :(得分:1)
根据库恩博士的建议,这是一个示例TerminatingLogger。我把它放在error()频道中,这样它就不会经常落入字符串比较中,但你可以把它放在任何你想要的地方。
class TerminatingLogger extends Actor with StdOutLogger {
override def receive: Receive = {
case InitializeLogger(_) ⇒ sender() ! LoggerInitialized
case error : akka.event.Logging.Error if error.message.toString().equals("TERMINATE_SYSTEM") =>
{
context.system.shutdown()
}
case event: LogEvent ⇒
{
print(event)
}
}
}
然后在application.conf文件中配置它
akka {
loggers = [com.namespace.TerminatingLogger]
}