在我的nlog配置中,我已设置
<targets async="true">
了解所有日志现在异步发生在我的应用程序工作流程中。 (而且我注意到性能有所提高,尤其是在电子邮件目标上)。这让我考虑了日志顺序。我了解到,使用异步,无法保证操作系统执行异步工作的顺序。因此,如果在我的Web应用程序中,多个请求进入同一方法,每个请求将它们的出现记录到NLog中,这是否真的意味着该事件在我的日志目标中出现的顺序不一定就是该日志的顺序。方法是由各种请求调用的?
如果是这样,这仅是异步所带来的后果吗?还是我可以做些什么来使我的日志反映正确的顺序?
不幸的是,这是您必须忍受的。如果维护顺序很重要,则必须同步运行。
我知道这已经很老了,我刚刚开始使用NLog,但是如果您看到电子邮件客户端的性能提高了,您可能只想对电子邮件目标声明ASYNC?
NLog将不会通过激活<targets async="true">
来执行LogEvent序列的重新排序。它只是激活了一个内部队列,可以更好地处理突发并启用批处理写入。