scala – 在系统关闭时保证Akka中的日志输出刷新?
发布时间:2020-12-16 19:24:38 所属栏目:安全 来源:网络整理
导读:我正在使用 Akka FSM与Scala并使用FSM特征的日志成员进行日志记录,即akka.event.Logging的实例. 当应用程序想要正常终止时调用context.system.shutdown()来关闭actor系统时,似乎最新的日志消息有时会丢失(并且根本不会打印出来). 有没有办法保证在系统关闭之
我正在使用
Akka FSM与Scala并使用FSM特征的日志成员进行日志记录,即akka.event.Logging的实例.
当应用程序想要正常终止时调用context.system.shutdown()来关闭actor系统时,似乎最新的日志消息有时会丢失(并且根本不会打印出来). 有没有办法保证在系统关闭之前总是打印出所有日志消息? 解决方法
根据库恩博士的建议,这是一个示例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] } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |