jjzjj

AsyncTargetWrapper

全部标签

c# - 当调用 Flush() 时,NLog 是否应该刷新 AsyncTargetWrapper 中所有排队的消息?

我想关闭我的应用程序并写入任何待处理的日志消息。所以我在关机过程中调用了LogManager.Flush()。但是,我没有看到所有的消息都写出来了。相反,如果我等待几秒钟(使用Thread.Sleep()),我会看到消息。检查后NLog'scodeonGitHUB,我发现AsyncTargetWrapper.FlushAsync()方法仅安排惰性写入器线程在下一批中写入所有待处理消息。它不会同步写入日志消息。这是预期的行为吗?我期望LogManager.Flush()是同步的,即:阻塞直到所有未决消息被写入(或超过超时)。我在关机时使用的代码:LogManager.Flush(ex=>