加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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]
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读