NLog 在必要时不记录所有内容

NLog not logging everything when necessary

我有一个程序意外崩溃。我已经让 NLog 向我提供有关崩溃位置的信息,但它没有实现其目标,因为它在崩溃前记录了 30"。 所以我必须改变一些东西。

我看到应该有来自 here 的命令 NFlush 但事实上没有

我有 4.7.10 版本。

但如果是的话,我可能会在一些战略要点上使用。

所以我的问题是:如何冲洗? 有没有另一种方法可以使 NLog 更频繁地刷新?

谢谢

帕特里克

带有智能提示的屏幕截图来自 NLog Logger-object. The NLog.LogManager.Flush() 是静态方法。

NLog 在收到应用程序即将退出的通知时自动尝试刷新。这是通过连接到 AppDomain.ProcessExit + AppDomain.DomainUnload

来完成的

这个自动 flush/shutdown 通常可以在 Windows 上的 .NetFramework 运行 上运行。但是当 运行 在其他平台上使用 NetCore 时,AppDomain-events 可以是 fired very early before the application has even started to shutdown. Thus causing NLog to stop logging while application is still in progress of shutting down. Microsoft seems to be working on improving this behavior, but not sure if Net60 will include the fixes. NLog.LogManager.AutoShutdown = false tells NLog that the user will explictly handle flush/shutdown.

简单的解决方案就是使用 NLog FileTarget 或 NLog ConsoleTarget(它们会自动刷新),而不使用 <targets async="true">. And if running on exotic platforms, where Microsoft have failed to implement correct signal of process-exit, then configure NLog.LogManager.AutoShutdown = false