“Async”关键字是使 NLog 日志记录异步的唯一要求吗?

Posted

技术标签:

【中文标题】“Async”关键字是使 NLog 日志记录异步的唯一要求吗?【英文标题】:Is "Async" keyword the only requirement to make NLog logging asynchronous? 【发布时间】:2018-01-22 16:58:48 【问题描述】:

我正在写入目标数据库。在我的目标部分,我已将异步标记为 true。我是否仍需要向我的 Web 服务编写代码以使日志记录异步或由框架处理?

<targets async="true">

【问题讨论】:

The documentation 似乎回答了这个问题。如果没有,最好指出(在您的问题中)您所看到的表明它不起作用的内容。 我不明白我是否只需要在配置中写async关键字。或者我还需要实现write 方法。请澄清。 是用 AsyncWrapper 包装所有目标的简写。文档建议如果您的 wite() 方法需要很长时间,请设置异步或使用 AsyncWrapper 来加快写入速度。 【参考方案1】:

是的,只需要 async 属性(在您的配置中)

不需要 C# 中的 async 关键字。

PS:请注意,如果您在短时间内写入超过 10000 个事件,则默认情况下会丢弃 async 属性。如果您需要更多控制,请使用 asyncWrapper 而不是 async 属性。见docs

【讨论】:

以上是关于“Async”关键字是使 NLog 日志记录异步的唯一要求吗?的主要内容,如果未能解决你的问题,请参考以下文章

在 NLog 使用 AsyncWrapper 后大部分日志丢失

使用Nlog记录日志到数据库

NLog日志记录

C# 使用NLog记录日志

.NET Core使用Nlog记录日志

常见的异步方式async 和 await