Logging 如何在终止actor系统之前刷新日志记录?

Logging 如何在终止actor系统之前刷新日志记录?,logging,akka.net,Logging,Akka.net,我正在使用Serilog,我注意到在关闭actor系统时,在删除Serilog之类的自定义记录器之前,并没有处理所有未处理的日志消息。因此,一堆消息不再发送到Serilog接收器,而是最终进入默认记录器 作为一种解决方法,我在ReceiveAsync处理程序中使用此方法: wait Task.Delay(TimeSpan.FromSeconds(5)); Context.System.Terminate(); 我可能可以在非异步处理程序或FSMOnTermination处理程序中使用AutoR

我正在使用Serilog,我注意到在关闭actor系统时,在删除Serilog之类的自定义记录器之前,并没有处理所有未处理的日志消息。因此,一堆消息不再发送到Serilog接收器,而是最终进入默认记录器

作为一种解决方法,我在
ReceiveAsync
处理程序中使用此方法:

wait Task.Delay(TimeSpan.FromSeconds(5));
Context.System.Terminate();
我可能可以在非异步处理程序或FSM
OnTermination
处理程序中使用
AutoResetEvent
或类似的处理程序


不过,上面的解决方案只是一个解决方案。有没有办法刷新日志?请注意,在关闭actor系统之前,我已经刷新了Serilog,该部分工作正常。

如果您使用的是全局
Log
类,请在终止之前调用
Log.CloseAndFlush()


如果您正在使用IoC容器或类似容器单独管理
记录器
实例,但该实例未分配给全局
Log.Logger
属性,请确保容器(或您的应用程序代码)在终止前处理(日志实例)。

我现在无法检查,因为我不在办公室,但那只是一个玩笑,不是吗?我已经这么说了。问题是Akka在关机期间,在所有挂起的日志消息传递给自定义日志记录器之前,正在删除所有自定义日志记录器。啊,我明白了-感谢您的澄清。听起来需要一个有Akka.NET知识的人来衡量:-)是的,很抱歉让人困惑,我澄清了一下这个问题。